2017-02-11 69 views
1

問:數據框追蹤統計

有一個內置的計算尾隨統計方法?

背景:

軋製方法看起來幾乎是完美的,但我只能得到它提供滾滾向前不向後。我想計算第1列1:4列的平均值,而不是第4列的默認值。我知道這可以通過一些操作和/或循環來完成(或者可能就像這樣刪除列1:4),但是如果有一個簡單的內置解決方案,那將是非常棒的。

目前代碼:

import pandas as pd 
import numpy as np 

df = pd.DataFrame(np.random.randint(100, 110, size=(5, 10)), 
        columns=list([x for x in range(1, 11)])) 

df 

     1 2 3 4 5 6 7 8 9 10 
0 106 108 104 108 108 109 105 102 106 102 
1 105 106 107 102 100 106 106 100 101 103 
2 103 101 102 100 107 105 106 100 107 105 
3 104 104 107 109 105 106 108 107 109 100 
4 103 100 101 106 101 102 101 100 103 100 

df.rolling(window=4, axis=1).mean() 

    1  2 3  4  5  6  7  8  9  10 
0 NaN NaN NaN 106.5 107.00 107.25 107.5 106.0 105.50 103.75 
1 NaN NaN NaN 105.0 103.75 103.75 103.5 103.0 103.25 102.50 
2 NaN NaN NaN 101.5 102.50 103.50 104.5 104.5 104.50 104.50 
3 NaN NaN NaN 106.0 106.25 106.75 107.0 106.5 107.50 106.00 
4 NaN NaN NaN 102.5 102.00 102.50 102.5 101.0 101.50 101.00 

回答

1

是否pandas.DataFrame.shift()資格作爲一個簡單的內置溶液

window_size = 4 
df.rolling(window=window_size, axis=1).mean().shift(1-window_size, axis=1) 

給出:

 1  2  3  4  5  6  7 8 9 10 
0 106.00 106.75 107.50 107.25 106.75 105.25 103.50 NaN NaN NaN 
1 104.25 105.75 106.00 107.25 105.75 104.25 104.25 NaN NaN NaN 
2 102.50 102.25 103.75 103.75 105.00 104.00 102.50 NaN NaN NaN 
3 104.00 105.75 105.25 105.25 107.25 106.25 104.75 NaN NaN NaN 
4 107.75 105.50 104.25 102.75 103.00 103.75 105.00 NaN NaN NaN 
+0

感謝斯蒂芬,這個偉大的工程。我不必刪除列或重新索引列。 – ac2001