我有一个如下例所示的数据框:
我想转换以获得以下内容:
总之:使用“类型”列作为后缀复制值列,并将数据帧转换为宽格式。
是否有任何干净、简单的方法可以在 pyspark 数据框或 pandas 上执行此操作?
最佳答案
在 pandas
中,我们会 pivot
然后用 Index.map
折叠多索引:
new_df = df.pivot(index='Id', columns='Type')
new_df.columns = new_df.columns.map('_'.join)
# Or with an explicit format string like:
# new_df.columns = new_df.columns.map('{0[0]}_{0[1]}'.format)
new_df = new_df.reset_index()
new_df
:
Id Value_1_A Value_1_B Value_2_A Value_2_B
0 567 1.0 NaN 2.0 NaN
1 789 1.0 1.0 2.0 2.0
2 1234 1.0 1.0 2.0 2.0
数据帧和导入:
import pandas as pd
df = pd.DataFrame({'Id': {0: 1234, 1: 1234, 2: 789, 3: 789, 4: 567},
'Type': {0: 'A', 1: 'B', 2: 'A', 3: 'B', 4: 'A'},
'Value_1': {0: 1, 1: 1, 2: 1, 3: 1, 4: 1},
'Value_2': {0: 2, 1: 2, 2: 2, 3: 2, 4: 2}})
关于python - Pandas 使用列作为后缀进行透视,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68925853/