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
相关产品推荐
相关产品推荐

