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

Pandas如何按指定列分组对不同列执行差异化聚合操作

实现方法

完全可以用pandas原生的分组聚合接口一次性完成需求,写法简洁符合Pythonic规范,不需要额外循环或自定义处理。
核心是给groupby后的agg方法传入列-聚合函数字典,为每一列单独指定聚合规则:

# 按ops列分组,为不同列指定对应聚合逻辑
agg_result = df.groupby(by='ops', as_index=False).agg({
    'col1': 'first',   # col1取分组第一个值
    'col2': 'min',     # col2取分组最小值
    'col3': 'max',     # col3取分组最大值
    'col4': 'last'     # col4取分组最后一个值
})

输出结果

执行上述代码后得到的结果完全匹配预期结构:

ops  col1  col2  col3  col4
0    1     5     7    67    12
1    2    34     9    10     3

参数说明

  • as_index=False:避免分组键ops被设置为DataFrame的行索引,保留为普通列,和参考结果结构一致
  • 字典内聚合函数除了传入字符串别名,也可以传入pandas内置的聚合方法对象(比如pd.Series.min),效果完全相同

如果需要自定义聚合后的列名,可以使用pandas 0.25及以上版本支持的命名聚合语法,可读性更高:

agg_result = df.groupby(by='ops', as_index=False).agg(
    col1=('col1', 'first'),
    col2=('col2', 'min'),
    col3=('col3', 'max'),
    col4=('col4', 'last')
)

这种写法和前面字典传参的输出结果完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 09:54:31