Я хочу иметь возможность группировать свои данные по пользователям, а затем по определенным периодам дат - чтобы получить счетчики и средние значения и разрешить их создание в новых столбцах за период дат.
Мои данные выглядят примерно так:
df = pd.DataFrame({
"USER_ID": ["AA1", "AB1", "AA3", "CD3", "AB4", "AA1", "AA1", "AA3", "AB4", "AB4"],
"ACTIVITY_CATEGORY": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
"DATE": ['2018-09-19', '2018-09-13', '2018-09-06', '2018-09-18', '2018-09-15', '2018-09-19', '2018-09-16', '2018-09-06', '2018-09-04', '2018-09-04']})
Итак, я обычно делаю это следующим образом:
df.groupby(['USER_ID',pd.Grouper(key='DATE', freq='W')])['ACTIVITY_CATEGORY'].count()
Но сейчас я хочу получить его на определенную неделю.По сути, возможность получить что-то более похожее на:
Я прочитал документацию по различным способам группировки в Grouper - и смещения, которые можно использовать.До сих пор не могу найти что-то подобное.
Существует довольно громоздкий способ сделать это, используя цикл for и используя timedelta и вычитая 7 дней с последнего дня, но это очень неэффективно для большого набора данных.В поисках более питонического пути.