我想计算下面数据帧中每一行的1年滚动平均值
测试:
index id date variation
2313 7034 2018-03-14 4.139148e-06
2314 7034 2018-03-13 4.953194e-07
2315 7034 2018-03-12 2.854749e-06
2316 7034 2018-03-09 3.907458e-06
2317 7034 2018-03-08 1.662412e-06
2318 7034 2018-03-07 1.346433e-06
2319 7034 2018-03-06 8.731700e-06
2320 7034 2018-03-05 7.145597e-06
2321 7034 2018-03-02 4.893283e-06
...
Run Code Online (Sandbox Code Playgroud)
例如,我需要计算:
2018-03-13和2017-08-13之间的变化均值为7034
等等
我试过了:
test.groupby(['id','date'])['variation'].rolling(window=1,freq='Y',on='date').mean()
Run Code Online (Sandbox Code Playgroud)
但是我收到了错误消息:
ValueError: invalid on specified as date, must be a column (if DataFrame) or None
Run Code Online (Sandbox Code Playgroud)
我怎样才能使用pandas rolling()
功能呢?
[编辑1]
谢谢Sacul
我测试过:
df['date'] = pd.to_datetime(df['date'])
df.set_index('date').groupby('id').rolling(window=1, freq='Y').mean()['variation']
Run Code Online (Sandbox Code Playgroud)
但是freq='Y'
不起作用(我得到了:) ValueError: Invalid …