У меня есть набор данных в пандах с уникальным ключом события, личным ключом, датой и другими различными столбцами.Я пытаюсь добавить новый столбец, в котором будет указано количество событий для человека до даты в этой строке.Я продолжаю поиск, но нахожу результаты только для заданных критериев (т. Е. Df ['x'] = df [df ['date'] <'2018-06-01'], где дата не изменяется с каждой строкой) илидля метода .apply (function), который занимает много времени. </p>
Я думаю о том, чтобы поместить df в sqlite db, а затем соединить таблицу с самим собой, а затем подсчитать различный оператор case.Пример ниже.Тем не менее, есть дополнительные манипуляции, которые мне нужно сделать впоследствии, и я предполагаю, что должен быть более быстрый способ сделать это в Python.Любые предложения?
Sample data in df- dates repeat and not in order. Multiple people can be on one date and a person can have multiple events on a single date.
[Event, person, date]
[1,1,2018-01-03]
[2,1,2018-01-01]
[3,1,2018-01-02]
[4,2,2018-01-04]
[5,2,2018-01-05]
Desired output
[Event, person, date, count of evnt]
[1,1,2018-01-03, 2]
[2,1,2018-01-01, 0]
[3,1,2018-01-02, 1]
[4,2,2018-01-04, 0]
[5,2,2018-01-05, 1]
Извините за формат, я нахожусь на моем телефоне.
Пример:
Скажите, что поля Evebt, человек, дата я бы
Select event,
person,
date,
Count (distinct (case when ((t2.date less than
t1.date) And (t2.person=t1.person))
Then t2.event else null end)) event_count
From t1
Left outer join t1 as t2 on (t2.event=t1.event)
Group by event, person, date.