2017-02-01 9 views
0

これは...私は時系列を持ち、複数の列にわたってn行のローリング平均を計算したい。 最初は、各行の平均を含む別の列を作成して、n行の標準ローリング平均を行いました。 しかし、私の計算を捨てるいくつかの列に値がないとき。パンダ:一度にn行のローリング行すべての平均を計算する

例:平均の

Col1 | Col2 | Col3 | Avg 
10 | 20 |  | 15 
    | 10 |  | 10 
10 | 15 | 20 | 15 

ローリング平均:13.33

それがされるべきである:14.16

ここでは、すべての数字を持っている私のために働いた例です...

Col1 | Col2 | Col3 | Avg 
10 | 20 | 15 | 15 
10 | 10 | 10 | 10 
10 | 15 | 20 | 15 

平均の転記:13.33

それがされるべきである:13.33

私は何ができるかが手動ループです...私はまた、各行の要素の数を含むことになり第二のカラムを追加することができます。

しかし、もっと良い方法がありますか?

+1

私は理解していないんだろうか? – piRSquared

+0

最初の例で使用できるすべての値を追加して分割すると、12.14 – krinker

+0

10 + 20 + 10 + 15 + 20/6 = 12.14 – krinker

答えて

0

np.nanmeanは多次元配列のすべてを平均します。

np.nanmean(df.values) 

14.166666666666666 

ローリング3期のファッションでこれを使用すると、12.14がどこから来るか、これは

pd.Series({df.index[i]: np.nanmean(df.iloc[i-2:i+1].values) for i in range(2, len(df))}) 

2 14.166667 
dtype: float64 

+0

ありがとう!実際それは私がやったことですが、それもあまりにも "マニュアル"と感じました。私はilocに頼ってループすることなく、よりエレガントな方法を望んでいました。 – krinker

関連する問題