寻求识别(标志 True)何时 col1 中的当前值下降到低于 col1 中最近达到的局部最大值设定的百分比,这样就会有多个这样的信号,如达到最大值并且当前值下降设定的百分比(即自动重置)除了百分比之外没有设定阈值)。请注意,标志 True 应该仅出现在下行方向,而不是上行方向。
percent = 0.7
df = pd.DataFrame({'col0':[1,2,3,4,5,6,7,8,9]
,'col1':[5,4.9,5.5,3.5,3.1,4.5,5.5,1.2,5.8]
,'col2':[3.5, 3.43, 3.85, 2.45, 2.17, 3.15, 3.85, 0.84, 4.06]
,'col3':[np.nan, 3.43, 3.85, 3.85, 3.85, 3.85, 3.85, 3.85, 4.06]
})
df['col2'] = df['col1'] * percent
df['col3'] = df['col2'].shift(-1).cummax().shift()
col3 的当前形式生成 cummax,但期望的结果将找到向下的局部最大值,并且每次 col1 向下突破 col3 时,col4 都会标记 True。下面是生成的 col3 和 col4 的一个示例:
col0 col1 col2 col3 col4
0 1 5.0 3.50 NaN False
1 2 4.9 3.43 3.43 False
2 3 5.5 3.85 3.85 False
3 4 3.5 2.45 3.85 True
4 5 3.1 2.17 3.85 False
5 6 4.5 3.15 3.85 False
6 7 5.5 3.85 3.85 False
7 8 1.2 0.84 3.85 True
8 9 5.8 2.90 4.06 False