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

Python实现单分组多聚合类型的数据统计(类SQL分组查询)

Pandas实现分组聚合(对应SQL GROUP BY多聚合操作)

输入DataFrame

categorynamecostcost2
Tier1Tina105
Tier1Jessy2015
Tier1Tina3010

目标输出DataFrame

categorycount distinct namesum of costavg of cost2
Tier126010

需求等效于SQL语句:

SELECT category, COUNT(DISTINCT name), SUM(cost), AVG(cost2) GROUP BY category

要求用Python实现,优先单语句完成,且代码需支持扩展到30列的实际场景。


解决方案代码

使用Pandas的groupby+agg组合,通过字典配置列的聚合规则,单语句即可完成:

import pandas as pd

# 构造输入数据(实际场景可替换为读取数据源)
df = pd.DataFrame({
    'category': ['Tier1', 'Tier1', 'Tier1'],
    'name': ['Tina', 'Jessy', 'Tina'],
    'cost': [10, 20, 30],
    'cost2': [5, 15, 10]
})

# 核心聚合语句
result = df.groupby('category', as_index=False).agg({
    'name': ('count distinct name', lambda x: x.nunique()),
    'cost': ('sum of cost', 'sum'),
    'cost2': ('avg of cost2', 'mean')
})

扩展性说明

这种字典式配置完美适配多列场景:

  • 字典的键对应原DataFrame的列名
  • 每个值是(输出列别名, 聚合函数)的元组:聚合函数可以是Pandas内置函数名(如sum/mean),也可以是自定义函数(如去重计数用lambda x: x.nunique())
  • 新增聚合需求时,只需在字典中添加对应的键值对即可,无需修改核心逻辑,轻松支持30列的复杂聚合

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 14:51:04