熊猫数据框从接下来的几行中找到最大值

时间:2019-12-01 06:26:22

标签: python pandas

我有一个价格栏和一个最大值栏:

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)。感谢您的任何帮助,谢谢!

2 个答案:

答案 0 :(得分:2)

使用4shift的{​​{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