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~)
このシリーズをオブジェクトごとに元のデータフレームにマージしますか?正確なコマンドを理解できません
rolling をtransform
とともに使用できます。
df['moving'] = df.groupby('object')['value'].transform(lambda x: x.rolling(10, 1).mean())
1
in rolling
は、最小期間数です。
次のように、rolling
オブジェクトに対して groupby
を直接使用できます。
df['moving'] = df.groupby('object').rolling(10)['value'].mean()
チェーンメソッドとして列を作成します。
(
df
.assign(
column_name = lambda x:
x
.groupby(['object'])['value']
.transform(lambda x: x.rolling(10)
.mean())
)
)