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

Pandas DataFrame判断首列当前值是否落入上一行两列区间的实现问题

实现代码

import pandas as pd

# 初始数据构造
first=pd.Series([0,1680,5000,14999,17000])
last =pd.Series([4999,7501,10000,16777,21387])
dd=pd.concat([first, last], axis=1)

# 构造判断掩码:当前行第一列值落在上一行[第一列, 第二列]闭区间内
mask = (dd[0] >= dd[0].shift(1)) & (dd[0] <= dd[1].shift(1))

# 提取符合条件的第一列取值
result = dd.loc[mask, 0].tolist()
print(result)
# 输出结果:[1680, 5000]

# 如果需要每个值单独作为子列表,可做如下处理
split_result = [[x] for x in result]
print(split_result)
# 输出结果:[[1680], [5000]]

逻辑说明

  • shift(1)会将整列数据向下偏移1行,偏移后每行对应位置的值就是原数据上一行的取值,第一行偏移后为NaN,自动不参与判断
  • 布尔掩码同时满足两个判断条件:当前行第一列值 ≥ 上一行第一列值、当前行第一列值 ≤ 上一行第二列值
  • 最后用loc按掩码过滤后提取第一列,转列表即得到目标结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 17:18:05