Python 3.x Pandas Groupby和Group Concat用于整数值
我的pandas数据框看起来像这样,我希望通过键将其分组,并连接id的逗号分隔符,然后创建一个新的数据框。现在这里的问题是id列是整数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:
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()