我有一个像这样的数据集:
>>> df = pd.DataFrame({'id_sin':['s123','s123','s124','s124'],
'raison':['first problem','second problem','album','dog']
})
>>> df
id_sin raison
0 s123 first problem
1 s123 second problem
2 s124 album
3 s124 dog
这是预期的输出:
id_sin raison
0 s123 first problem, second problem
1 s124 album, dog
我尝试过的事情:
df['raison'] = df.groupby('id_sin')['raison'].apply(lambda x: ', '.join(x))
但是不起作用...我想念什么?感谢您的帮助!
答案 0 :(得分:3)
尝试使用agg
:
df.groupby('id_sin')['raison'].agg(', '.join).reset_index()
输出:
id_sin raison
0 s123 first problem, second problem
1 s124 album, dog
答案 1 :(得分:1)
尝试将组更改为列表:
df.groupby(['id_sin']).raison.apply(lambda x: ', '.join(list(x)))
在测试完代码后,事实证明您不应该执行df['raison'] =...
,因为df.groupby('id_sin')['raison'].apply(lambda x: ', '.join(x))
的长度2的索引不同于df
的长度4的索引。