我正在找到一种将N * M数据帧重塑为1 *(N * M)数据帧的有效方法:
输入>
df1
ID distUnit col_a col_b
1000 150 35 55
1000 250 10 20
1200 150 12 13
1200 250 16 20
期望的输出>
ID col_a_150 col_b_150 col_a_250 col_b_250
1000 35 55 10 20
1200 12 13 16 20
我的主意>
row['distUnit']
combined_first
将已处理的行添加回结果数据框中具有挑战性的部分>
由于输入数据的大小为14440 * 20,所以我的想法不够有效。
想知道更好的实现方法来解决这个问题吗?
感谢阅读。
答案 0 :(得分:2)
如果对(ID,distUnit)在整个数据集中都是唯一的,则可以像这样简单地“取消融化”您的数据框:
df=df.groupby(['ID','distUnit'])['col_a','col_b'].mean().unstack()
df.columns = [f'{col[0]}_{col[1]}' for col in df.columns.values]
检查this问题以了解类似方法。