python - pandas groupby 连接多列中的字符串

标签 python pandas group-by

我有这个 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/

相关文章:

python - flask.cli.NoAppException : Failed to find Flask application or factory in module "flaskr". 使用“FLASK_APP=flaskr:name 指定一个

python - 如何将 Python 2.7 设为 Mac 的默认 Python 版本?

python - 计算 pandas 数据框中唯一组合的数量

python - 使用测试驱动开发对 Web API 进行编程

python - python print 语句中出现意外 None

python - Excel不同格式的日期如何在Pandas数据框中排序

python - 从 Dataframe 中删除 NaN?

python - 添加列不同长度的 Pandas

mysql - 显示分组依据的最大列 - 显示所有行

mysql - 连接两个表并得到结果