You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pandas如何结合groupby与apply同时实现分组计数与列值合并

实现方案

你可以直接使用Pandas分组对象的agg()方法一次性完成多个聚合操作,无需分开计算后再合并,完整可运行代码如下:

import pandas as pd

# 构造示例DataFrame
df = pd.DataFrame({
    'colA': ['name1', 'name2', 'name2', 'name4', 'name2', 'name5', 'name5'], 
    'colB': ['red', 'yellow', 'yellow', 'black', 'yellow', 'green', 'blue']
})

# 单次分组完成两个聚合需求
result = df.groupby('colA', as_index=False).agg(
    Color=('colB', lambda x: ','.join(x)),
    Count_grouped_A=('colB', 'count')
)

执行后得到的result就是你需要的合并结果:

colAColorCount_grouped_A
name1red1
name2yellow,yellow,yellow3
name4black1
name5green,blue2

补充说明

  1. 上述写法使用了Pandas的命名聚合语法,要求Pandas版本≥0.25.0。如果你使用的是更早的版本,可以使用兼容写法:
result = df.groupby('colA')['colB'].agg([lambda x: ','.join(x), 'count']).reset_index()
# 自定义列名
result.columns = ['colA', 'Color', 'Count grouped A']
  1. 你之前的拼接代码存在变量名不匹配的问题:lambda lists: ','.join(color)中lambda参数是lists,但join方法里调用的是未定义的color,修改为相同变量名即可正常运行。

内容的提问来源于stack exchange,提问作者plategt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 22:15:04