2016-07-05 45 views
3
df = pd.DataFrame({'values':[2,6,1,5,8,9]}) 

我試圖創建一個名爲sum的新ROM,它是3個最新值的總和。因此,這將返回此[np.nan, np.nan, 9, 12, 14, 22]行是3個最新值的總和

回答

3

使用rollingRolling.sum

print (df.rolling(3).sum()) 
    values 
0  NaN 
1  NaN 
2  9.0 
3 12.0 
4 14.0 
5 22.0 

或者:

print (df['values'].rolling(3).sum()) 
0  NaN 
1  NaN 
2  9.0 
3 12.0 
4 14.0 
5 22.0 
Name: values, dtype: float64 

df['sum'] = df['values'].rolling(3).sum() 
print (df) 
    values sum 
0  2 NaN 
1  6 NaN 
2  1 9.0 
3  5 12.0 
4  8 14.0 
5  9 22.0 

Docs

1

隨着集中表現,這是一個使用NumPy's 1D convolution一個方法 -

np.append([np.nan]*2,np.convolve(df['values'],np.ones((3,)),'valid'))