我在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
我设法使用一段时间得到这个结果,但我想用更“熊猫”的方式编程,以获得计算速度。
由于
答案 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