我有一个价格栏和一个最大值栏:
PRICE MAX
1.095806 <- 1.095806
1.046494 <- 1.046494
1.019099 <- 1.019099
1.002662 1.035535
1.019099 1.035535
1.008142 1.035535
1.035535 <- 1.035535
1.019099 <- 1.019099
0.986225 <- 0.986225
0.964309 0.975267
0.953351 0.980745
0.964309 1.030057
0.964309 0.964309
0.975267 <- 1.068410
0.980745 <- 1.117722
1.030057 <- 1.145117
1.068410 <-
1.117722 <-
1.145117 <-
1.139638
我希望MAX在接下来的5行中找到最高的PRICE值。
我尝试了df['MAX'] = df['PRICE'].rolling(5).max()
,但这是不对的。
我认为我需要使用shift(-5)。感谢您的任何帮助,谢谢!
答案 0 :(得分:2)
使用4
和shift
的{{1}}滚动:
-3
或滚动df['MAX'] = df['PRICE'].rolling(4).max().shift(-3)
print (df)
PRICE MAX
0 1.095806 1.095806
1 1.046494 1.046494
2 1.019099 1.019099
3 1.002662 1.035535
4 1.019099 1.035535
5 1.008142 1.035535
6 1.035535 1.035535
7 1.019099 1.019099
8 0.986225 0.986225
9 0.964309 0.964309
10 0.953351 0.975267
11 0.964309 0.980745
12 0.964309 1.030057
13 0.975267 1.068410
14 0.980745 1.117722
15 1.030057 1.145117
16 1.068410 1.145117
17 1.117722 NaN
18 1.145117 NaN
19 1.139638 NaN
和5
滚动shift
:
-4
答案 1 :(得分:0)
我猜测您说nan
值不正确。
您可以设置min_periods
值来克服这一点
>>> df
price
0 4
1 8
2 28
3 6
4 23
5 26
6 41
7 20
8 18
9 7
您可以像这样在滚动窗口中找到最大值。
>>> df.price.rolling(5, min_periods=1).max()
0 4.0
1 8.0
2 28.0
3 28.0
4 28.0
5 28.0
6 41.0
7 41.0
8 41.0
9 41.0
Name: price, dtype: float64