Сложная цепочка подсчетов
Возникла нетипичная задача на Питоне. Есть датафрейм, в котором около 2 млн строк. Структура примерна следующая: Пользователь | Статус оплаты | Изучаемая дисциплина.
Ниже примерный аналог рабочего датафрейма.
data = {'user_id':[1,1,2,2,1,1,2,1,2,3,3,1,2], 'pay':[1, 0, 0, 0, 0,1,1,0,0,0,0,0,0], 'napravl':['dis_1','dis_2','dis_2','dis_3','dis_1','dis_1','dis_5','dis_4','dis_5','dis_7','dis_3','dis_7','dis_3']}
df = pd.DataFrame(data)
df
Мне нужно для каждого пользователя проследить цепочку его передвижений по школе, количество оплат для каждого звена и количество открытых абонементов для каждого звена. Для приведенного датафрейма должно получиться следующее:
Получается для юзера 1 я вижу, что он начал учиться на dis_1, прошел там 1 курс и совершил 1 оплату. Потом перешел на dis_2 где прошел 1 курс и не провел оплату. Затем вновь вернулся на dis_1, где открыл 2 абонемента и сделал 1 оплату и т.д.
Питон изучаю сравнительно недавно, поэтому с трудом представляю как подобное можно реализовать. В голову приходит только сложный цикл подсчетом каждой строки, удалением после подсчета, созданием нового ДФ и слияния с исходным. Но что-то мне подсказывает, что я сильно усложняю и топорно подхожу к решению вопроса. Буду благодарен за любую помощь!
