首页 > 解决方案 > 如何通过使用熊猫添加列将多行组合成单行?

问题描述

我需要将多行与熊猫组合成一行,具体取决于“哈希”列

我的数据框视图:

    hash     a      b
0     1      1      6
1     1      2      7
2     1      3      8
3     2      4      9 
4     2      5      10

我希望数据框像这样转换:

   hash     a      a1     a3     b     b1     b2  
0    1      1      2      3      6     7      8   
1    2      4      5      nan    9     10     nan 

我曾尝试使用一些与 groupby 相关的代码或转置整个数据帧,但不知道该怎么做。任何人都可以帮助我吗?

标签: pythonpandas

解决方案


创建MultiIndexby set_indexwith counter column by cumcount, reshape byunstack和 flatten Multiindexby mapwith join

df1 = df.set_index(['hash', df.groupby('hash').cumcount().add(1).astype(str)]).unstack()
df1.columns = df1.columns.map(''.join)
df1 = df1.reset_index()
print (df1)
   hash   a1   a2   a3   b1    b2   b3
0     1  1.0  2.0  3.0  6.0   7.0  8.0
1     2  4.0  5.0  NaN  9.0  10.0  NaN

推荐阅读