编辑:就在我放弃的时候,我找到了答案here:
rmlag = lambda xs: np.argmax(xs[::-1])
df['Open'].rolling(window=5).apply(func=rmlag)
我正在努力解决以下问题:如何向DataFrame添加一列,对于每一行,计算自达到n期高点以来的天数(句点)?
以下是我正在使用的DataFrame示例。我计算了5天的滚动高点
df['Rolling 5 Day High'] = df['Open'].rolling(5).max()
如何计算每一行自达到5天高点以来的天数?例如,""天数"对于2012-03-16索引的行应该是4,因为该行在2012-03-12达到相应的滚动5天高点14.88。对于2012-03-19指数的下一行,该值应为3,因为该行在2012-03-14达到了14.79的连续5天高点。
Open Rolling 5 Day High
Date
2012-03-12 14.88 NaN
2012-03-13 14.65 NaN
2012-03-14 14.79 NaN
2012-03-15 14.41 NaN
2012-03-16 14.59 14.88
2012-03-19 14.68 14.79
2012-03-20 14.56 14.79
2012-03-21 14.40 14.68
2012-03-22 14.35 14.68
2012-03-23 14.40 14.68
2012-03-26 14.69 14.69
2012-03-27 14.78 14.78
2012-03-28 15.01 15.01
2012-03-29 15.14 15.14
2012-03-30 15.36 15.36
2012-04-02 15.36 15.36
2012-04-03 15.44 15.44
2012-04-04 14.85 15.44
2012-04-05 14.67 15.44
2012-04-09 14.40 15.44
2012-04-10 14.38 15.44
2012-04-11 14.35 14.85
2012-04-12 14.36 14.67
2012-04-13 14.55 14.55
2012-04-16 14.26 14.55