2016-06-27 22 views
12

パンダ0.18.1を使用して、1列のデータフレームのローリング平均を取ってみたいと思います。バージョン0.18.0以降、これはrolling()オブジェクトで行われます。これらのローリングオブジェクトのデフォルトは右寄せになります。ローリングオブジェクトを中心値に整列させるには、渡すことができる真偽値の引数、center = Trueがありますが、左揃えの方法はないようです。ここでの例は次のとおりパンダローリングオブジェクトの左揃え

df = pandas.DataFrame({'A': [2,3,6,8,20, 27]}) 
df 
    A 
0 2 
1 3 
2 6 
3 8 
4 20 
5 27 

標準的な方法を自動的に右に揃え、これは値がサイズ3のウィンドウと最初の二つindeciesでありません。私たちは動作を中央整列させることができる

df.rolling(window=3).mean() 
      A 
0  NaN 
1  NaN 
2 3.666667 
3 5.666667 
4 11.333333 
5 18.333333 

このように:

df.rolling(3).mean() 
      A 
0 3.666667 
1 5.666667 
2 11.333333 
3 18.333333 
4  NaN 
5  NaN 
01:

df.rolling(window=3).mean(center=True) 
      A 
0  NaN 
1 3.666667 
2 5.666667 
3 11.333333 
4 18.333333 
5  NaN 

は、しかし、私が探している本であります

これを行うには、デフォルトの右揃えを使用してから、再度インデックスを作成するか、行の順序を逆にして「右揃え」にします。これは回避する必要がありますまっすぐな操作。

答えて

13

私はあなたがshiftを使用することができると思う:

a = df.rolling(window=3).mean().shift(-2) 
print (a) 
      A 
0 3.666667 
1 5.666667 
2 11.333333 
3 18.333333 
4  NaN 
5  NaN 
+0

私はそれを行うために、より直接的な方法があった期待していたが、これは、良い解決策です。私は、まだ機能が圧延オブジェクトにないと思います。 – Alex

+0

はい、私はあなたが正しいと思います。私は決してそれを見ない。 – jezrael

+4

私はこの回答を受け入れました。なぜなら、望ましい機能は本当にパンダローリングオブジェクトにはなく、これは最も洗練されたソリューションを提供するからです。この左揃えをもう少し動的に管理したい場合は、ウィンドウサイズを変数wで設定し、.shift()メソッドの引数をw-1とすることができます。 – Alex

関連する問題