熊猫基于多个列合并具有相同值的行

时间:2020-02-20 10:17:53

标签: python pandas pandas-groupby

我有一个这样的样本数据集

Col1 Col2 Col3
A 1,2,3 A123
A 4,5 A456
A 1,2,3 A456
4,5 A123

我只想基于唯一的Col1将Col2和Col3合并为一行。

预期结果:

Col1 Col2 Col3
1,2,3,4,5 A123,A456

我介绍了一些解决方案,并尝试了以下方法。但它仅追加单列。

df.groupby(df.columns.difference(['Col3']).tolist())\
                 .Col3.apply(pd.Series.unique).reset_index()

1 个答案:

答案 0 :(得分:1)

删除具有子集Col1和3的重复项
groupby Col1
然后使用string concatenate方法

进行汇总
(df.drop_duplicates(['Col1','Col3'])
.groupby('Col1')
.agg(Col2 = ('Col2',lambda x: x.str.cat(sep=',')),
     Col3 = ('Col3', lambda x: x.str.cat(sep=','))
     )
.reset_index()
 )

    Col1    Col2    Col3
0   A   1,2,3,4,5   A123,A456