Python Pandas:Groupby总和和连接字符串


问题内容

熊猫数据框示例:

ID名称COMMENT1 COMMENT2 NUM
1 dan hi hello 1
1个你的朋友2
3乔恩不是3
2乔恩狗猫.5
3乔恩是否.1

我正在尝试创建一个按ID和NAME分组的数据框,该数据框将COMMENT1和COMMENT2(也总计NUM)连接起来。

这就是我要寻找的:

ID名称COMMENT1 COMMENT2 NUM
1 dan hi you hello friend 3
3乔恩是是否3.1
2乔恩狗猫.5

我尝试使用此:

input_df = input_df.groupby(['ID', 'NAME', 'COMMENT1', 'COMMENT2']).sum().reset_index()

但这是行不通的。

如果我使用这个:

input_df = input_df.groupby(['ID']).sum().reset_index()

它对NUM列求和,但不包括所有其他列。


问题答案:

让我们合而为一

df.groupby(['ID','Name'],as_index=False).agg(lambda x : x.sum() if x.dtype=='float64' else ' '.join(x))
Out[1510]: 
   ID Name  COMMENT1      COMMENT2  NUM
0   1  dan    hi you  hello friend  3.0
1   2  jon       dog           cat  0.5
2   3  jon  yeah yes       nope no  3.1