从DataFrame中的n个前一行中选择最大值/最小值

时间:2017-07-04 12:57:07

标签: python-3.x pandas dataframe

我在Python中使用pandas,我有一个选择一些数据的问题。我有带浮点值的DataFrame,我想创建一个包含列的前n行的最大(或最小)的列,并且对于n个第一行设置为0,这里是我将得到的结果的示例喜欢:

df_test = pd.DataFrame({'a':[2,7,2,0,-1, 19, -52, 2]})
df_test['result_i_want_with_n=3'] = [0, 0, 0, 7, 7, 2, 19, 19]
print(df_test)
    a   result_i_want_with_n=3
0   2   0
1   7   0
2   2   0
3   0   7
4   -1  7
5   19  2
6   -52 19
7   2   19

我设法使用一段时间得到这个结果,但我想用更“熊猫”的方式编程,以获得计算速度。

由于

1 个答案:

答案 0 :(得分:2)

Rolling是你的朋友。您需要移动一行才能获得准确的结果,否则您的第一个值将位于第三行。

df_test.rolling(window=3).max().shift(1).fillna(0)

0     0.0
1     0.0
2     0.0
3     7.0
4     7.0
5     2.0
6    19.0
7    19.0