web-dev-qa-db-ja.com

Pythonパンダ:グループ内の移動平均を計算する

100個のオブジェクトの時系列を含むデータフレームがあります。

object  period  value 
1       1       24
1       2       67
...
1       1000    56
2       1       59
2       2       46
...
2       1000    64
3       1       54
...
100     1       451
100     2       153
...
100     1000    21

value列のウィンドウ10で移動平均を計算したいと思います。私は何かをしなければならないと思います

df.groupby('object').apply(lambda ~calculate MA~) 

このシリーズをオブジェクトごとに元のデータフレームにマージしますか?正確なコマンドを理解できません

8

rollingtransformとともに使用できます。

df['moving'] = df.groupby('object')['value'].transform(lambda x: x.rolling(10, 1).mean())

1 in rollingは、最小期間数です。

12
zipa

次のように、rollingオブジェクトに対して groupby を直接使用できます。

df['moving'] = df.groupby('object').rolling(10)['value'].mean()
4
Sandeep Kadapa

チェーンメソッドとして列を作成します。

(
    df
        .assign(
            column_name = lambda x: 
                x
                    .groupby(['object'])['value']
                    .transform(lambda x: x.rolling(10)
                    .mean())
        )
)
0
Ramin Melikov