Создание сессий на основе меток времени и другого местоположения - PullRequest
0 голосов
/ 09 декабря 2018

Я хочу создать сеанс на основе местоположения и метки времени.Если местоположение новое или время превысило 15-минутный интервал , новой записи назначается запись в кадре данных.Пример ниже

Location      |               Time                  |     Session
    A                   2016-01-01 00:00:15                  1
    A                   2016-01-01 00:05:00                  1
    A                   2016-01-01 00:10:08                  1
    A                   2016-01-01 00:14:08                  1
    A                   2016-01-01 00:15:49                  2     
    B                   2016-01-01 00:15:55                  3
    C                   2016-01-01 00:15:58                  4
    C                   2016-01-01 00:26:55                  4
    C                   2016-01-01 00:29:55                  4
    C                   2016-01-01 00:31:08                  5

Это код, который не работает для данной проблемы.

from datetime import timedelta


cond1 = df.DateTime-df.DateTime.shift(1) > pd.Timedelta(15, 'm')
#OR
#15_min = df.DateTime.diff() > pd.Timedelta(minutes=15)

cond2 = df.location != df.location.shift(1)
session_id = (cond1|cond2).cumsum()
df['session_id'] = session_id.map(pd.Series(range(0,10000))) 

Я хочу новый сеанс, если найдено новое местоположение или истекло 15 минутдля текущего местоположения.

1 Ответ

0 голосов
/ 09 декабря 2018

Вы можете groupby и Location, и использовать pd.Grouper для разбивки на 15-минутные интервалы и местоположение, затем используйте ngroup для нумерации каждой группы:

df['Session'] = (df.groupby(['Location',pd.Grouper(key='Time',freq='15min')])
                 .ngroup()+1)

>>> df
  Location                Time  Session
0        A 2016-01-01 00:00:15        1
1        A 2016-01-01 00:05:00        1
2        A 2016-01-01 00:10:08        1
3        A 2016-01-01 00:14:08        1
4        A 2016-01-01 00:15:49        2
5        B 2016-01-01 00:15:55        3
6        C 2016-01-01 00:15:58        4
7        C 2016-01-01 00:26:55        4
8        C 2016-01-01 00:29:55        4
9        C 2016-01-01 00:31:08        5
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...