2017-07-04 31 views
1

私はPythonでpandasを使用していますが、データを選択する際に問題があります。私は浮動小数点値を持つDataFrameを持っています。そして、列の前のn行の最大値(または最小値)を含む列を作成し、n個の最初の行について0に設定したいと思います。持ちたい:DataFrameの前のn行から最大値/最小値を選択

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

Rollingはここにあなたの友達です。正確な結果を得るには、1行分シフトする必要があります。そうでなければ、最初の値は3行目になります。

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 
+0

ありがとう、それは私が必要としたものです。この方法を知らなかった –