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

Python中GroupBy实现单列多聚合计算的方法咨询

解决Pandas GroupBy对同一列执行多个聚合操作的问题

嘿,这个需求其实挺常见的,Pandas提供了几种简洁的方式来实现对同一列同时应用多个聚合函数,我给你详细说明下:

方法1:给列名传递聚合函数列表

你可以在agg()方法的字典参数里,给目标列(比如这里的A列)传入一个包含多个聚合函数的列表,Pandas会自动为该列生成对应的聚合结果,返回的是带多级列名的DataFrame。

示例代码:

import numpy as np
import pandas as pd

# 生成示例数据
df = pd.DataFrame(np.random.randint(0,5,size=(20, 3)), columns=list('ABC'))
print("原始数据:")
print(df)

# 按C列分组,对A列同时取最大、最小值,对B列取最小值
grouped_df = df.groupby('C').agg({
    'A': ['max', 'min'],
    'B': ['min']
})

print("\n分组聚合结果(多级列名):")
print(grouped_df)

这种方式的输出里,列名是两层结构:第一层是原列名(A、B),第二层是聚合函数名(max、min)。如果要访问A列的最大值,可以用grouped_df['A']['max']来获取。

方法2:自定义聚合结果的列名(更直观)

如果觉得多级列名不够清晰,你可以使用pd.NamedAgg来为每个聚合结果指定自定义列名,这样输出的DataFrame列名会更简洁易懂,后续访问数据也更方便。

示例代码:

import numpy as np
import pandas as pd

df = pd.DataFrame(np.random.randint(0,5,size=(20, 3)), columns=list('ABC'))
print("原始数据:")
print(df)

# 自定义列名的聚合方式
grouped_df = df.groupby('C').agg(
    A_max=pd.NamedAgg(column='A', aggfunc='max'),
    A_min=pd.NamedAgg(column='A', aggfunc='min'),
    B_min=pd.NamedAgg(column='B', aggfunc='min')
)

print("\n分组聚合结果(自定义列名):")
print(grouped_df)

这个方法生成的结果里,列名直接是A_max、A_min、B_min,你可以直接通过这些列名访问对应的数据,不用处理多级索引。

另外,你也可以用lambda函数或者numpy的聚合函数(比如np.max、np.min)替换示例里的字符串函数名,效果完全一致,比如把'max'换成np.max也是可行的。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:29:15