我有一个结构相当不直观的数据框:
device1 device2 column_name
1 1 date
111 211 param1
112 212 param2
2 2 date
121 221 param1
122 222 param2
3 3 date
131 231 param1
132 232 param2
我很难尝试将其转换为所需的数据帧:
date param1 param2
device1 1 111 112
2 121 122
3 131 132
device2 1 211 212
2 221 222
3 231 232
使用pivot
、stack
/unstack
让我更接近目标,但从未达到目标。
我怎样才能做到这一点?
最佳答案
您可以堆叠
数据帧进行 reshape ,然后使用groupby
+ cumcount
创建顺序计数器来识别不同的行,最后使用 set_index
创建多级索引并使用 unstack
reshape :
d = df.set_index('column_name').stack()
i = d.groupby(level=[0, 1]).cumcount()
out = d.to_frame().set_index(i, append=True)[0].unstack(0).droplevel(1)
print(out)
column_name date param1 param2
device1 1 111 112
device1 2 121 122
device1 3 131 132
device2 1 211 212
device2 2 221 222
device2 3 231 232
关于python - 使用另一列内的列名称 reshape 数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65159436/