在Pandas DataFrame中以逗号连接groupby列

时间:2019-04-15 20:59:13

标签: python pandas dataframe

我有一个像这样的数据集:

>>> 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))

但是不起作用...我想念什么?感谢您的帮助!

2 个答案:

答案 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的索引。