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

Pandas如何获取首次满足futures_price高于prices_df的日期

实现方案

需求为按时间顺序逐位比对期货价格High值与对应阈值,返回首个满足High值大于阈值的日期,匹配成功后立刻终止,忽略后续所有记录。示例场景下预期返回值为2022-05-05。

核心逻辑

  • 由于prices_df的顺序和future_prices的日期行顺序完全一一对应,直接按位置做向量比对即可,不需要写循环
  • 生成布尔判断掩码后,直接取第一个为True的位置对应的日期索引,就是目标结果
  • 匹配到第一个结果后不会再遍历后续行,符合终止要求

修正后完整代码

import pandas as pd

prices_df = [1106, 1098, 1090.625, 1082.577, 1074.52]
future_dates = {'Date': ['2022-05-02', '2022-05-03', '2022-05-04', '2022-05-05', '2022-05-06'],
                'High': [1020, 1005, 966, 2100, 2000],
                }
future_prices = pd.DataFrame(future_dates)
future_prices = future_prices.set_index('Date')

# 逐位置生成判断条件
break_condition = future_prices['High'].to_numpy() > prices_df
# 取第一个满足条件的日期赋值
df3.loc[i, 'Break_date'] = future_prices.index[break_condition][0]

结果校验

逐行比对结果如下,完全符合预期:

  • 2022-05-02:High值1020 < 阈值1106,不触发
  • 2022-05-03:High值1005 < 阈值1098,不触发
  • 2022-05-04:High值966 < 阈值1090.625,不触发
  • 2022-05-05:High值2100 > 阈值1082.577,触发,直接返回该日期
  • 2022-05-06:匹配已终止,即使High值2000 > 阈值1074.52也不会被读取

边界场景提示:如果存在所有日期都不满足阈值的情况,可以先判断break_condition.any()是否为True,为True时再取首个日期,否则可以给Break_date赋值空值或自定义标记,避免索引越界报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 16:15:12