Pandas Groupby与Group Concat的整数值

时间:2017-12-17 05:13:12

标签: python-3.x pandas pandas-groupby

我的pandas数据框看起来像这样,我希望用键对它进行分组,并将id的逗号分隔并连接并创建一个新的数据帧。现在问题是id列是整数。

df:
          key      id
    0   abc     5073138
    1   abcd    5025923
    2   abc     7453197
    3   abcd    5032121
    4   abcd    5032121
    5   abc     5032121


new df:

         key       id
     0  abc     5073138,7453197,5032121
     1  abcd    5025923,5096021,5032121

我尝试使用group by with apply和aggregate但是没有工作

df.groupby('key').apply(lambda x: ','.join(x.id))

df.groupby('key').agg({'id' : lambda x: ', '.join(str(x))})

1 个答案:

答案 0 :(得分:1)

你的第一个解决方案几乎奏效了:

df.groupby('key').id.apply(lambda x: ','.join(map(str, x)))

如果id列提前转换为str,则更简单:

df.id = df.id.astype(str)
df.groupby('key').id.apply(','.join)

虽然我个人不喜欢申请,但没有它你可能会有更好的表现:

df.id = df.id.astype(str)
df.id += ',' # add trailing commas
df.groupby('key').id.sum().str[:-1] # sum of strs is concatenation

这给出了相同的结果,但是采用完全矢量化的方式。