小编Tho*_*mas的帖子

列日期的1年滚动平均大熊猫

我想计算下面数据帧中每一行的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-14和2017-08-14之间的变化均值为7034
  • 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 …

python pandas rolling-computation rolling-average

6
推荐指数
1
解决办法
2127
查看次数