我的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))})
答案 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
这给出了相同的结果,但是采用完全矢量化的方式。