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

如何为Pandas DataFrame分组生成Quantity列的最大值填充列

为Pandas分组添加组内最大计数列

我有一个包含5列的Pandas DataFrame,其中第3、4列为坐标值,这些坐标常出现重复。我已经通过以下代码按abbreviation、X、Y分组,用cumcount生成了从0开始计数的Quantity列:

df['Quantity'] = df.groupby(['abbreviation', 'X', 'Y']).cumcount()

生成的DataFrame如下:

name abbreviation     X     Y  Quantity
0    A-x            A  15.6  19.4         0
1   A-y2            A  15.6  19.4         1
2    B-a            B  15.0  25.0         0
3    B-d            B  15.0  25.0         1
4   C-x1            C  15.0  10.0         0
5   C-c4            C  15.0  10.0         1
6    C-5            C  15.0  10.0         2
7    E-v            E  83.4  16.5         0
8    E-2            E  83.4  16.5         1
9   E-v2            E  83.4  16.5         2
10   E-1            E  83.4  16.5         3
11  F-ab            F  19.1  98.4         0
12  F-nb            F  19.1  98.4         1
13  G-ku            G  78.0  17.0         0

现在需要新增Max Quantity列,该列要填充对应分组内Quantity列的最大值,也就是每个分组内的所有行都显示该组的最大Quantity值,期望的最终DataFrame如下:

name abbreviation     X     Y  Quantity Max Quantity
0    A-x            A  15.6  19.4         0            1
1   A-y2            A  15.6  19.4         1            1
2    B-a            B  15.0  25.0         0            1
3    B-d            B  15.0  25.0         1            1
4   C-x1            C  15.0  10.0         0            2
5   C-c4            C  15.0  10.0         1            2
6    C-5            C  15.0  10.0         2            2
7    E-v            E  83.4  16.5         0            3
8    E-2            E  83.4  16.5         1            3
9   E-v2            E  83.4  16.5         2            3
10   E-1            E  83.4  16.5         3            3 
11  F-ab            F  19.1  98.4         0            1
12  F-nb            F  19.1  98.4         1            1
13  G-ku            G  78.0  17.0         0            0

解决方案

使用Pandas的groupby.transform方法,对每个分组的Quantity列取最大值,将结果映射回原DataFrame的每一行:

df['Max Quantity'] = df.groupby(['abbreviation', 'X', 'Y'])['Quantity'].transform('max')

transform方法会自动将分组计算的最大值广播到该组的所有行,完美实现需求中的效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 16:35:27