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

Python Pandas如何标记属于连续4次价格上涨区间的对应数据行

Pandas标记连续4次价格上涨区间实现方案

完整实现代码

import pandas as pd

# 若还未处理diff1的首个空值,先执行这行填充为0
df['diff1'] = df['Close'].diff().fillna(0)

# 1. 生成布尔序列,标记当前行是否较前一行上涨
is_rise = df['diff1'] > 0

# 2. 滑动窗口大小设为3,识别连续3次上涨的结束位置(对应4个连续上涨的价格行)
consecutive_end_mask = is_rise.rolling(window=3).sum() == 3

# 3. 初始化标记列为False
df['is_consecutive'] = False

# 4. 批量标记所有符合条件的区间行
for end_idx in consecutive_end_mask[consecutive_end_mask].index:
    df.loc[end_idx - 3 : end_idx, 'is_consecutive'] = True

逻辑说明

连续4个逐次上涨的价格,对应3次正的差值(diff1>0),因此用大小为3的滑动窗口判断是否存在连续3次上涨,窗口的最后一个索引就是连续4个上涨行的结束位置。找到所有结束位置后,将该位置往前推3行到结束位置的所有行统一标记为True,刚好覆盖4个连续上涨的行。
该方案完全匹配你给出的示例规则,运行后仅索引0-3会被标记为True,其余行均为False。如果遇到更长的连续上涨场景(比如连续5天价格上涨),所有属于该区间的行都会被标记为True,符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 03:18:04