Мой вопрос касается группы данных панд.Примерный набор данных будет выглядеть следующим образом:
cust_id | date | category
A0001 | 20/02/2016 | cat1
A0001 | 24/02/2016 | cat2
A0001 | 02/03/2016 | cat3
A0002 | 03/04/2015 | cat2
Теперь я хочу сгруппировать cust_id, а затем найти события, которые происходят в течение 30 дней друг от друга, и составить список категорий для них.На данный момент я решил использовать pd.grouper следующим образом.
df.groupby(['cust_id', pd.Grouper(key='date', freq='30D')])['category'].apply(list)
Но это не помещает [cat1, cat2, cat3] в тот же список для A0001.Любая помощь в том, что я делаю неправильно или как я могу делать то, что мне нужно, будет очень цениться.
Результаты, которые я хочу, должны выглядеть примерно так:
A0001 | [cat1, cat2, cat3]
A0002 | [cat2]
Заранее спасибо
Редактировать:
После ответа Вена я попытался, и этоработал для этого минимального примера, мой плохой для предоставления минимального примера, который не был представительным.Это можно воссоздать с помощью этого примера для версий панд как 0,20,3, так и 0,23,0.
cust_id date category
0 A0001 2015-02-02 cat5
1 A0002 2015-02-03 cat1
2 A0001 2016-02-20 cat1
3 A0001 2016-02-24 cat2
4 A0001 2016-03-02 cat3
5 A0003 2016-09-09 cat2
6 A0003 2016-08-21 cat5
Ответ, который я получаю:
cust_id
A0001 [cat5]
A0001 [cat1, cat2]
A0001 [cat3]
A0002 [cat1]
A0003 [cat5]
Name: category, dtype: object
Мои извинения за первоначальное замешательство!