You need to enable JavaScript to run this app. pandas按grp分组独立聚合min、max列极值的实现方法
优惠活动
大模型
产品
解决方案
定价
更多

pandas按grp分组独立聚合min、max列极值的实现方法

Pandas 分组聚合实现

核心逻辑:Pandas 的分组聚合支持为不同列指定独立的聚合规则,无需单独筛选单列计算,可直接匹配“每组取min列最小值、max列最大值”的需求。

推荐实现:命名聚合(无列名歧义,pandas 0.25+ 支持)

这种写法逻辑清晰,不会出现列名混淆,是当前最推荐的实现方式:

# 先确保min、max列为datetime类型,避免时间排序出错
df[["min", "max"]] = df[["min", "max"]].apply(pd.to_datetime)

result = df.groupby("grp", as_index=False).agg(
    min=("min", "min"),  # 输出列"min":对原始min列取分组最小值
    max=("max", "max")   # 输出列"max":对原始max列取分组最大值
)

该代码的输出完全符合预期,以grp=6为例,聚合结果为:

  • min值:2013-10-13 21:51:21(本组所有min列的最早时间)
  • max值:2013-10-15 04:07:45(本组所有max列的最晚时间)

兼容旧版本写法

如果使用较早版本的Pandas,可通过传入列与聚合规则的字典实现,效果完全一致:

result = df.groupby("grp").agg({
    "min": "min",
    "max": "max"
}).reset_index()

原写法的偏差原因

你之前尝试的df.groupby(['grp'])['min'].agg(['min','max']).reset_index(),执行链路是先筛选min列,仅针对该列计算分组下的最小值、最大值,全程未访问原始max列的数据,因此无法得到预期结果。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.04 03:54:04