pandas中groupby后使用apply()函数生成分组冒号分隔列表的方法
实现方案
最简洁的Pythonic写法可以用groupby+agg一步完成,不需要额外处理索引和列名重命名:
result = df.groupby('c1', as_index=False).agg( list=('c2', lambda x: ':'.join(x.astype(str))) )
代码说明
groupby('c1', as_index=False):按c1列分组,as_index=False参数避免分组键变成索引,输出后直接为普通列agg()方法直接指定新列名为list,聚合逻辑为对每组的c2列操作:- 先把整数类型的
c2值转为字符串类型 - 用
join方法以冒号为分隔符拼接所有字符串
- 先把整数类型的
完整可运行示例
import pandas as pd # 构造示例DataFrame df = pd.DataFrame({ 'c1': ['B', 'A', 'B', 'A', 'A'], 'c2': [1, 2, 5, 3, 7] }) # 分组拼接 result = df.groupby('c1', as_index=False).agg( list=('c2', lambda x: ':'.join(x.astype(str))) ) print(result)
输出结果
c1 list 0 A 2:3:7 1 B 1:5
内容的提问来源于stack exchange,提问作者Luis Alejandro Vargas Ramos
相关产品推荐
相关产品推荐

