python - 如何从列名中获取字符串并在python中融合多个列?
问题描述
我有这张表,我需要将这张表融化成预期的表格,我需要从列名中获取点名称(a 和 b),并让 bq 和进度列融化。
type bq a bq b progress a progress b
P 1 1 1 2
Q 2 3 4 2
R 2 1 1 2
预期结果如下:
type point bq progress
P a 1 1
P b 1 2
Q a 2 4
Q b 3 2
R a 2 1
R b 1 2
如何在python中做到这一点?
解决方案
尝试这个:
df = pd.DataFrame({'type':['p','q','r'],
'bq a':['1','2','2'],
'bq b':['1','3','1'],
'progress a':['1','4','1'],
'progress b':['2','2','2']})
df_bq = pd.melt(df, id_vars =['type'], value_vars =['bq a','bq b'])
df_bq.columns = ['type','point','bq']
df_bq['point'] = df_bq['point'].apply(lambda x:x.replace('bq ',''))
df_bq.sort_values(by = 'point')
df_p = pd.melt(df, id_vars =['type'], value_vars =['progress a','progress b'])
df_p.columns = ['type','point','progress']
df_p['point'] = df_p['point'].apply(lambda x:x.replace('progress ',''))
df_p.sort_values(by = 'point')
df_concat = pd.concat([df_bq, df_p['progress']], axis=1)
df_concat
结果 :
推荐阅读
- c# - 从字符串转换为字节。当对 Int32 而不是 Byte 进行处理时,CLR 是否进行了优化以处理更好的转换?
- node.js - 未处理的拒绝 (FirebaseError):没有要更新的文档
- android - Android - onFocusChange 第一次不起作用
- ios - 如何根据我们自己的逻辑实现 swift Dictionary
- r - 从 ggplot2 中的 ggplot x 轴删除 NA
- java - Maven 通过命令编译插件
- sql-server - SQL Server 2017 远程连接错误 - GCP 上的 40
- java - Spring @Transactional 注释在作为 AbstractUserDetailsAuthenticationProvider 子类的提供程序类中不起作用
- python - 如何在循环中添加新列?
- javascript - React 钩子中的 `useState(null)[1]` 是什么?