寻找一种有效的方法来重塑数据框:从n * m到1 *(n + m)

时间:2020-03-20 23:02:00

标签: python pandas

我正在找到一种将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

我的主意>

  1. 浏览df1中的每一行
  2. 根据row['distUnit']
  3. 的值在 col_a col_b 中添加前缀
  4. 使用combined_first将已处理的行添加回结果数据框中

具有挑战性的部分>

由于输入数据的大小为14440 * 20,所以我的想法不够有效。

想知道更好的实现方法来解决这个问题吗?

感谢阅读。

1 个答案:

答案 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问题以了解类似方法。