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

如何用Pandas生成含多列不同聚合规则的分组汇总表?

按性别分组的多列自定义聚合汇总表实现思路

数据集

import pandas as pd
pd.DataFrame(data={"grade":[10,5,9,7],
                   "sex": ["F", "F", "M", "M"],
                   "pred_1": [1,0,1,1], 
                   "pred_2": [0,0,1,1],
                   "pred_3": [0,0,0,1]})

对应的表格:

gradesexpred_1pred_2pred_3
10F100
5F000
9M110
7M111

需求说明

目前用pd.pivot_table(df, values=pred_cols, index=["sex"])能按sex分组统计pred列,但需要给不同列指定不同聚合函数,同时新增mean_grade、min_grade这类grade列的聚合项,最终生成一张汇总表。

实现思路

  • 拆分聚合任务:把列分成两类,一类是pred_*系列列,一类是grade列,分别定义对应的聚合规则
  • 分组合并法:
    • 单独对pred_*列做分组聚合,用pivot_table或groupby.agg指定你需要的聚合函数(比如求和、均值)
    • 单独对grade列按sex分组,用agg指定mean、min等函数,同时给结果列重命名为mean_grade、min_grade
    • 把两个聚合后的结果按sex列合并(用merge或join,因为两者都是以sex为索引/键),得到完整的汇总表
  • 一步聚合法:直接用groupby.agg的字典参数,一次性指定所有列的聚合规则,示例如下:
    df.groupby("sex").agg({
        "grade": ["mean", "min"],
        "pred_1": "sum",
        "pred_2": "mean",
        "pred_3": "sum"
    })
    
    之后可以用columns.map整理列名,把多级列名改成更直观的单一名称(比如把grade_mean调整为mean_grade)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 01:20:17