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

如何按两列分组DataFrame并新增第三列的最小、最大值列

按多列分组并新增分组最值列

原始数据

import pandas as pd

a = [{'column_1': 'A', 'column_2': 'B', 'column_3': 3},
     {'column_1': 'A', 'column_2': 'B', 'column_3': 8},
     {'column_1': 'Y', 'column_2': 'C', 'column_3': 2},
     {'column_1': 'Y', 'column_2': 'C', 'column_3': 10},
     {'column_1': 'Y', 'column_2': 'C', 'column_3': 6},
     {'column_1': 'F', 'column_2': 'S', 'column_3': 11},
     {'column_1': 'F', 'column_2': 'S', 'column_3': 18},
     {'column_1': 'F', 'column_2': 'S', 'column_3': 5},
     {'column_1': 'F', 'column_2': 'S', 'column_3': 20}]
df = pd.DataFrame(a)

解决方案

使用groupby按column_1和column_2分组,通过transform方法计算每组column_3的最小/最大值,直接赋值给新列即可:

# 新增min列,存储分组后column_3的最小值
df['min'] = df.groupby(['column_1', 'column_2'])['column_3'].transform('min')
# 新增max列,存储分组后column_3的最大值
df['max'] = df.groupby(['column_1', 'column_2'])['column_3'].transform('max')

结果展示

执行后得到的DataFrame如下:

column_1column_2column_3minmax
0AB338
1AB838
2YC2210
3YC10210
4YC6210
5FS11520
6FS18520
7FS5520
8FS20520

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 02:00:34