You need to enable JavaScript to run this app. pandas中按另一列分组选取DataFrame某列前X%最高值的方法
优惠活动
大模型
产品
解决方案
定价
更多

pandas中按另一列分组选取DataFrame某列前X%最高值的方法

无逐行循环的优雅实现方案

你的需求本质是为col2的每个分类(A/B/C)取组内col1值最高的1条记录,完全不需要写循环逐行跟踪取值,用pandas内置的分组操作就能高效实现。

核心实现代码

df = DataFrame(data = {"col1": [9,8,7,6,5,4,3,2,1], "col2": ["A","A","C","A","C","B","C","B","A"]})

# 先按col1降序排列,再按col2分组取每组首条记录
result = df.sort_values("col1", ascending=False).groupby("col2").head(1)

实际输出匹配度

运行代码后得到的结果行索引恰好为0、2、5,和预期完全对齐:

  • 分类A取到组内最高值9,对应原行索引0
  • 分类C取到组内最高值7,对应原行索引2
  • 分类B取到组内最高值4,对应原行索引5

取数总条数为3,刚好对应你要求的col1最高33%的行数规模。

方案特点

  • 无Python层逐行循环,全程是pandas底层优化过的向量化操作,数据量较大时性能远好于手写循环
  • 逻辑简洁无冗余,后续维护时不需要额外注释就能看懂取数规则
  • 自动规避重复取值问题,保证每个col2分类恰好出现在结果中一次

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.25 01:54:03