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

Python Pandas:如何获取间隔指定行数的两个最大数值

实现方案说明

仅靠pandas.Series.nlargest()无法直接满足需求,这个方法只会按数值大小返回前N个结果,不会校验行索引差的约束。你可以参考以下简便实现逻辑:

核心思路

  • 先把所有数据按Pressure值从大到小排序,同时保留原始行索引
  • 从排序后的第一个元素(全局最大值)开始,依次向后匹配第一个与它的索引差大于指定阈值的元素,就是符合要求的次大值
  • 如果需要取更多符合要求的数值,只需要扩展校验逻辑,保证新选的元素和所有已选元素的索引差都满足要求即可

示例代码

1. 构造测试数据

import pandas as pd

data = {'Pressure' : [100,112,114,120,123,420,1222,132,123,333,123,1230,132,1,23,13,13,13,123,13,123,3,222,2303,1233,1233,1,1,30,20,40,401,10,40,12,122,1,12,333],}
df = pd.DataFrame(data)

2. 核心实现代码

# 按Pressure降序排列,保留原始行索引
sorted_df = df.sort_values('Pressure', ascending=False).reset_index(names='original_idx')

min_index_gap = 5  # 自定义最小索引差
selected = [sorted_df.iloc[0]]  # 先存入全局最大值

# 遍历找符合要求的第二个值
for _, row in sorted_df.iloc[1:].iterrows():
    if all(abs(row['original_idx'] - s['original_idx']) > min_index_gap for s in selected):
        selected.append(row)
        break  # 找两个就停止,需要更多就去掉break

# 输出结果
result = pd.DataFrame(selected)[['original_idx', 'Pressure']]
print(result)

运行结果说明

针对你提供的测试数据,运行后会得到如下结果:

original_idxPressure
232303
61222

两个值的索引差为17,满足大于5的要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 09:24:07