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

如何在Python和Excel中对指定表格按group by获取min、max统计结果?

用Python和Excel实现连续相同分组的min/max统计

一、Python实现(基于Pandas)

你需要的是对连续相同的col_a值分组统计min和max(而非全局统一分组),具体步骤如下:

  1. 导入Pandas并构造/加载数据
import pandas as pd

# 构造原数据
data = {
    'col_a': ['A', 'B', 'B', 'C', 'D', 'D', 'E', 'A', 'A'],
    'col_b': [1, 2, 3, 4, 5, 6, 3, 2, 1]
}
df = pd.DataFrame(data)
  1. 生成连续分组标识
    通过判断当前行col_a与上一行是否相同,创建分组ID:
df['group_id'] = (df['col_a'] != df['col_a'].shift()).cumsum()
  1. 分组统计min和max
    按分组ID和col_a聚合,提取所需统计值:
result = df.groupby(['group_id', 'col_a'])['col_b'].agg(['min', 'max']).reset_index(drop=True)
  1. 查看结果
print(result)

输出与目标一致:

col_a  min  max
0     A    1    1
1     B    2    3
2     C    4    4
3     D    5    6
4     E    3    3
5     A    1    2

二、Excel实现

步骤1:创建连续分组ID

假设原数据在A1:B10区域(A1为col_a,B1为col_b):

  • 在C2单元格输入公式:=IF(A2=A1,C1,C1+1)
  • 下拉填充C列至C10,连续相同的col_a会被标记为同一ID

步骤2:统计min和max

方法1:数据透视表

  • 选中A1:C10区域,点击「插入」→「数据透视表」
  • 字段设置:
    • 行:col_a、group_id(最后可隐藏group_id列)
    • 值:col_b,分别设置为「最小值」和「最大值」
  • 调整布局后即可得到目标结果

方法2:函数公式

  • 在E2输入:=UNIQUE(FILTER(A2:A10,C2:C10<>"")),按顺序提取分组的col_a
  • 在F2输入:=MINIFS(B2:B10,C2:C10,MATCH(E2,A2:A10,0)),计算对应分组的最小值
  • 在G2输入:=MAXIFS(B2:B10,C2:C10,MATCH(E2,A2:A10,0)),计算对应分组的最大值
  • 下拉填充F、G列完成统计

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 12:03:03