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

如何用向量化方法判断DataFrame close列最近4个收盘价是否严格递增

报错原因

你之前的代码存在两个核心问题:

  1. apply的lambda函数入参是单行数据,但你在判断逻辑中直接使用了整个DataFrame的close列比较,返回的是布尔序列,if判断无法直接对序列做真假判定,因此抛出了歧义错误。
  2. apply本质是逐行迭代运算,性能极低,完全无法满足实盘交易的速度要求。

正确实现方案

以下实现全程采用原生向量化运算,无任何索引引用、iloc调用或逐行迭代,性能拉满,完全适配实盘低延迟需求:

# 计算相邻收盘价是否递增的布尔序列:True代表当前收盘价大于上一个收盘价
inc_series = df['close'].gt(df['close'].shift(1))
# 滚动判断连续3次比较都为真,右移1位对齐索引,得到最终标记列
df['monotonic_inc'] = inc_series.rolling(window=3).sum().eq(3).shift(1)

逻辑说明

连续4个收盘价严格递增,等价于连续3次相邻收盘价比较都满足「当前价>前价」,因此只需要对相邻比较的布尔序列做长度为3的滚动求和,求和结果等于3即代表连续3次都为真。最后的shift(1)是为了匹配你示例中的「最近4个收盘价不包含当前行」的逻辑,如果业务中需要包含当前行,删掉shift(1)即可。
前4行因为没有足够的历史数据,结果自动为空值,和你给出的示例输出完全一致。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 09:45:10