I have a dataframe containing time series for 100 objects:
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
I want to calculate moving average with window 10 for the value column. I guess I have to do something like
df.groupby('object').apply(lambda ~calculate MA~)
and then merge this Series to the original dataframe by object? Can't figure out exact commands
解决方案
You can use rolling with transform:
df['moving'] = df.groupby('object')['value'].transform(lambda x: x.rolling(10, 1).mean())
The 1 in rolling is for minimum number of periods.