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

如何快速查找DataFrame某列指定区间的最大值?

问题

需要查找DataFrame中某列指定位置区间内的最大值,当前使用df.loc[5:15, '分数'].max()可以实现,但运行速度极慢。需加速方法,且只需返回任意一个最大值即可。

示例DataFrame片段(实际包含更多列):

科目分数
数学22
数学21
数学22
数学19
数学19
数学19
数学23
数学21
数学25
数学22
数学23
数学22
数学20
数学19
数学19
数学19
数学24
数学21
数学22
数学24

预期结果:25

加速方案

以下几种方法能显著提升性能,尤其适用于大型DataFrame:

  • 使用iloc替代loc:当索引为默认整数序列时,iloc基于位置的切片效率远高于loc的标签切片。注意iloc是左闭右开区间,因此原5:15(包含15)需改为5:16:

    df.iloc[5:16, df.columns.get_loc('分数')].max()
    
  • 先提取列再切片:先将目标列转为Series,再进行位置切片求最大值,操作更简洁且性能更优:

    df['分数'].iloc[5:16].max()
    
  • 借助Numpy数组操作:Pandas的Series底层基于Numpy数组,直接转换为Numpy数组后切片求最大值,利用Numpy的C级优化实现最快速度:

    df['分数'].to_numpy()[5:16].max()
    

以上三种方法在示例DataFrame中均会返回25,满足需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 16:55:04