У меня есть такой набор данных:
user_id communication_type
7 Newsletter
7 Newsletter
7 Newsletter
7 Newsletter
7 Conference
7 Upcoming Events
7 Upcoming Events
7 Upcoming Events
7 Conference
7 Conference
7 Webinar
7 Hackathon
Требуемый вывод:
user_id communication_type sent_past
7 Newsletter 0
7 Newsletter 1
7 Newsletter 2
7 Newsletter 3
7 Conference 0
7 Upcoming Events 0
7 Upcoming Events 1
7 Upcoming Events 2
7 Conference 1
7 Conference 2
7 Webinar 0
7 Hackathon 0
В основном получают счетчик на каждом уровне тип_ связи для определенного user_id.
Решения, которые работают для меня:
train['sent_past'] = train.groupby(['user_id','communication_type']).apply(lambda x: x.reset_index()).index.get_level_values(1)
Но это очень медленно на ~ 1м рядах.Как я могу оптимизировать это?