У меня есть набор данных:
app id geo date count
90 NO 2018-09-04 27
66 HK 2018-09-03 2
66 HK 2018-09-02 4
80 QA 2018-04-22 5
85 MA 2018-04-20 1
80 BR 2018-04-19 68
Я пытаюсь создать поле, которое объединит данные для каждой даты за последние семь дней. Мой набор данных должен выглядеть так:
app id geo date count count_last_7_days
90 NO 2018-09-04 27 33
66 HK 2018-09-03 2 6
66 HK 2018-09-02 4 4
80 QA 2018-04-22 5 74
85 MA 2018-04-20 1 69
80 BR 2018-04-19 68 68
Я пытаюсь этот код:
df['date'] = pd.to_datetime(df['date']) - pd.to_timedelta(7, unit='d')
df = df.groupby(['geo','app_id', pd.Grouper(key='date', freq='W')]) .
['count'].sum().reset_index().sort_values('date')
Но даже подумал, что я использую Grouper с недельной периодичностью (freq='W'
), он учитывает начало недели в воскресенье, и у меня нет задержки в 7 дней для записей, не относящихся к воскресеньям.
Подскажите, пожалуйста, как я могу рассчитать это поле.