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

如何将DataFrame当前行值与前6行所有值比较并判断是否更大?

判断DataFrame当前行Close值是否大于前6行所有值的正确实现

你之前使用的df.close > df.close.shift(-6)仅能将当前行与前第6行的单个值做比较,无法覆盖“大于前6行所有值”的需求。要实现这个逻辑,需要先计算当前行之前6行的最大值,再与当前行的Close值对比。

解决方案代码

# 计算当前行前6行的最大值(不包含当前行)
df['prev6_max'] = df['close'].rolling(window=6).max().shift(1)

# 判断当前行Close是否大于前6行所有值,缺失值填充为False
df['is_greater_than_prev6'] = (df['close'] > df['prev6_max']).fillna(False)

代码说明

  • rolling(window=6).max():计算从当前行往前数6行(含当前行)的最大值,通过shift(1)将结果向后偏移一行,这样当前行的prev6_max就对应它前6行的最大值。
  • 对于前6条数据(索引0-5),由于没有足够的前6行数据,prev6_max会是NaN,用fillna(False)可以将这些位置的判断结果统一设为False,你也可以根据实际需求调整填充值。

比如你提到的索引1495的Close值0.604,此时prev6_max会是索引1489-1494这6行的Close最大值,只要0.604大于该值,is_greater_than_prev6就会返回True。

内容的提问来源于stack exchange,提问作者Royce Anton Jose

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 16:09:16