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

Pandas如何获取Color列连续3个red后接green时次日的dfpct值

实现方法

核心思路

通过滑动窗口统计当前行前3行的red出现次数,结合当前行的颜色判断是否符合触发条件,再取符合条件行的下一行dfpct值即可,代码会自动适配非连续的交易日索引,无需手动处理日期偏移。

完整代码

import pandas as pd

# 若你的DataFrame未按日期升序排序,需要先执行排序保证逻辑正确
df = df.sort_index()

# 1. 生成red标识序列:Color为red时取1,其他值取0
red_flag = (df['Color'] == 'red').astype(int)

# 2. 计算当前行的前3行是否全为red:滑动窗口求和等于3即满足条件
prev_3_all_red = red_flag.shift(1).rolling(window=3).sum() == 3

# 3. 判断当前行是否为green
curr_is_green = df['Color'] == 'green'

# 4. 匹配符合条件的行,取下一行的dfpct值
target_dfpct = df['dfpct'].shift(-1)[prev_3_all_red & curr_is_green]

# 输出结果
print(target_dfpct)

运行结果说明

用你提供的示例数据运行后,输出结果为:

2021-07-05   -0.001017
2021-07-13    0.002631
Name: dfpct, dtype: float64

输出的索引为触发条件的green行日期,对应的值就是你需要的green次日dfpct,第一个结果和你给出的示例完全一致。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 10:30:04