我有这个 Pandas 数据框:
df = DataFrame({'id':['a','b','b','b','c','c'], 'category':['z','z','x','y','y','y'], 'category2':['1','2','2','2','1','2']})
看起来像:
category category2 id
0 z 1 a
1 z 2 b
2 x 2 b
3 y 2 b
4 y 1 c
5 y 2 c
我想做的是按 id 分组并将其他两列作为唯一字符串的串联返回。
结果如下:
category category2 id
0 z 1 a
1 zxy 2 b
2 y 12 c
最佳答案
使用groupby/agg
聚合组。对于每个组,应用 set
查找唯一字符串,并应用 ''.join
连接字符串:
In [34]: df.groupby('id').agg(lambda x: ''.join(set(x)))
Out[34]:
category category2
id
a z 1
b yxz 2
c y 12
要将 id
从索引移动到结果 DataFrame 的列,请调用 reset_index
:
In [59]: df.groupby('id').agg(lambda x: ''.join(set(x))).reset_index()
Out[59]:
id category category2
0 a z 1
1 b yxz 2
2 c y 12
关于python - pandas groupby 连接多列中的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32117848/