Я пытаюсь найти ранг определенного события, группировать по пользователю и на основе даты, когда оно происходит, но для сброса ранга каждый раз, когда событие повторяется.
Для иллюстрации:Я хочу получить ранг в столбце rank_i_want
(но мне удается получить ранг только в столбце rank_i_get
, где ранг «продолжается», когда событие повторяется).В столбце rank_i_want
ранг возвращается к 1, когда событие снова происходит для этого пользователя:
date food name rank_i_get rank_i_want
0 2018-06-01 pizza Mary 1 1
1 2018-06-02 pizza Mary 2 2
2 2018-06-03 burger Mary 1 1
3 2018-06-04 burger Mary 2 2
4 2018-06-05 pizza Mary 3 1
5 2018-06-06 burger Mary 3 1
6 2018-06-03 pizza Bob 1 1
7 2018-06-04 burger Bob 1 1
8 2018-06-05 burger Bob 2 2
9 2018-06-05 pizza Bob 2 1
Это то, что я пробовал до сих пор (что приводит к rank_i_get
в таблицевыше):
a = pd.DataFrame({
'name': ['Mary', 'Mary', 'Mary', 'Mary', 'Mary', 'Mary', 'Bob' ,'Bob' ,'Bob', 'Bob'],
'date': ['2018-06-01', '2018-06-02', '2018-06-03', '2018-06-04', '2018-06-05', '2018-06-06', '2018-06-03', '2018-06-04', '2018-06-05', '2018-06-05'],
'food': ['pizza', 'pizza', 'burger', 'burger', 'pizza', 'burger', 'pizza', 'burger', 'burger', 'pizza']})
a['rank_i_get'] = a.groupby(['name', 'food'])['date'].rank()