У меня есть такой набор данных. Поле set
предназначено для представления user
в настоящее время в системе:
time user action set
----------------------------------
1:00 A walk NaN
2:00 B run NaN
3:00 C sit NaN
4:00 D enter NaN
5:00 E jump NaN
6:00 X leave NaN
...
I, чтобы добиться этого, мне нужно: 1) Определить начальное состояние 2) Любое когда у пользователя есть action
== "войти", добавить их в состояние 3) Каждый раз, когда у пользователя есть action
== "выйти", удалите их из состояния
** (пользователь может входить и выходить несколько раз)
Прямо сейчас я достигаю №1, создав сводную таблицу min time
для action
== "ввод" и action
== "выход". Если последний больше первого (уходит до входа), я могу предположить, что они в исходном состоянии. Пока это работает.
Ожидаемый результат здесь (я использовал выше logi c для определения начального набора на основе не показанных здесь строк) будет:
time user action set
----------------------------------
1:00 A walk {A,B,C}
2:00 B run {A,B,C}
3:00 C sit {A,B,C}
4:00 D enter {A,B,C,D}
5:00 B jump {A,B,C,D}
6:00 A leave {B,C,D}
Итак, по сути, я хотите внести изменения в set
на основе предыдущего set
. Я пробовал комбинации shift()
и df.set.apply
, но либо получаю ошибки, либо не соблюдаю последовательный порядок. Как этого добиться?