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

Python Pandas高效统计Section与Group组合频率并标记组内最大值

高效实现Pandas DataFrame的两个需求

没问题,针对你的大数据量场景,咱们用Pandas的向量化分组操作就能高效搞定这两个需求,完全不用循环,速度拉满:

第一步:新增Section&Group组合的出现频率列

要保留所有行的同时给每个组合标记出现次数,用groupby + transform('size')是最优解——transform会自动把分组计算的结果广播回原DataFrame的每一行,而且是Pandas底层优化过的操作,处理百万级行也毫无压力。

假设你的原DataFrame名为df,代码如下:

# 新增Frequency列,记录每个Section+Group组合的出现次数
df['Frequency'] = df.groupby(['Section', 'Group'])['Section'].transform('size')

这里用['Section']只是随便选了一个存在的列,transform('size')计算的是每个分组的行数,和选哪个列无关,所以也可以用df.groupby(['Section', 'Group']).transform('size'),效果一样。

第二步:标记每个Section中Count列的最大值行

同样用分组+transform的思路,先拿到每个Section组内Count的最大值,再和原Count列做比较生成布尔列,全程向量化,效率极高。

代码如下:

# 新增Is_Max_Count列,标记当前行是否为对应Section中Count的最大值
df['Is_Max_Count'] = df['Count'] == df.groupby('Section')['Count'].transform('max')

如果同一个Section里有多个行的Count等于最大值,这些行都会被标记为True,完全符合你的需求。

示例效果展示

假设原DataFrame是这样的:

SectionGroupCount
AX5
AX5
AY8
BX3
BY3
BY3

执行第一步后:

SectionGroupCountFrequency
AX52
AX52
AY81
BX31
BY32
BY32

执行第二步后:

SectionGroupCountFrequencyIs_Max_Count
AX52False
AX52False
AY81True
BX31True
BY32True
BY32True

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 09:13:16