Python 3.x Pandas Groupby和Group Concat用于整数值

Python 3.x Pandas Groupby和Group Concat用于整数值,python-3.x,pandas,pandas-groupby,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:

我的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与apply和AGGRATE一起使用,但没有成功

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

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

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

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

这将以完全矢量化的方式给出相同的结果。

另一种选择是使用
str.cat
df.groupby('key').id.apply(lambda x:x.str.cat(sep=',')).reset_index()