Панды: среднее значение за последние n дней
у меня естьPandas
фрейм данных так:
test = pd.DataFrame({ 'Date' : ['2016-04-01','2016-04-01','2016-04-02',
'2016-04-02','2016-04-03','2016-04-04',
'2016-04-05','2016-04-06','2016-04-06'],
'User' : ['Mike','John','Mike','John','Mike','Mike',
'Mike','Mike','John'],
'Value' : [1,2,1,3,4.5,1,2,3,6]
})
Как вы можете видеть ниже, набор данных не обязательно должен иметь наблюдения за каждым днем:
Date User Value
0 2016-04-01 Mike 1.0
1 2016-04-01 John 2.0
2 2016-04-02 Mike 1.0
3 2016-04-02 John 3.0
4 2016-04-03 Mike 4.5
5 2016-04-04 Mike 1.0
6 2016-04-05 Mike 2.0
7 2016-04-06 Mike 3.0
8 2016-04-06 John 6.0
Я хотел бы добавить новый столбец, который показывает среднее значение для каждого пользователя за последние n дней (в данном случае n = 2), если доступен хотя бы один день, иначе он будет иметьnan
значение. Например, на2016-04-06
Джон получаетnan
потому что у него нет данных для2016-04-05
а также2016-04-04
, Таким образом, результат будет примерно таким:
Date User Value Value_Average_Past_2_days
0 2016-04-01 Mike 1.0 NaN
1 2016-04-01 John 2.0 NaN
2 2016-04-02 Mike 1.0 1.00
3 2016-04-02 John 3.0 2.00
4 2016-04-03 Mike 4.5 1.00
5 2016-04-04 Mike 1.0 2.75
6 2016-04-05 Mike 2.0 2.75
7 2016-04-06 Mike 3.0 1.50
8 2016-04-06 John 6.0 NaN
Кажется, что я должен сочетаниеgroup_by
и подгонятьrolling_mean
Прочитав несколько постов на форуме, но я не мог понять, как это сделать.