pandas groupby在多个列中连接字符串

2024-05-15 08:58:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个熊猫数据框:

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

我想做的是groupby i d并返回另外两列作为唯一字符串的连接。

结果如下:

  category category2 id
0        z         1  a
1      zxy         2  b
2        y        12  c

Tags: 数据字符串iddataframedfgroupbycategorycategory2
1条回答
网友
1楼 · 发布于 2024-05-15 08:58:17

使用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从索引移动到结果数据帧的列,请调用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

相关问题 更多 >