我在Pandas中使用rolling_max函数:
http://pandas.pydata.org/pandas-docs/stable/computation.html#moving-rolling-statistics-moments
我怎样才能找到自价格处于这个高位以来的期数?
答案 0 :(得分:3)
从:
开始>>> ts
A 10
B 10
C -5
D -15
E -9
F -8
G -13
H -9
I -15
J -21
dtype: int64
你可能会这样做:
>>> rmlag = lambda xs: np.argmax(xs[::-1])
>>> pd.rolling_apply(ts, func=rmlag, window=3, min_periods=0).astype(int)
A 0
B 0
C 1
D 2
E 2
F 0
G 1
H 2
I 1
J 2
dtype: int64
与原始系列和滚动最大值相结合:
value roll-max rm-lag
A 10 10 0
B 10 10 0
C -5 10 1
D -15 10 2
E -9 -5 2
F -8 -8 0
G -13 -8 1
H -9 -8 2
I -15 -9 1
J -21 -9 2
[10 rows x 3 columns]