Создание и поддержание состояния системы на основе действий - PullRequest
0 голосов
/ 07 мая 2020

У меня есть такой набор данных. Поле 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, но либо получаю ошибки, либо не соблюдаю последовательный порядок. Как этого добиться?

...