Групповое расширение счетчика - смена элементов группы при разных отметках времени - PullRequest
0 голосов
/ 30 апреля 2019

У меня есть HUGHE DataFrame, который выглядит следующим образом (это просто пример, иллюстрирующий проблему):

id       timestamp target_time  interval                                                                   
1        08:00:00  10:20:00     (10-11] 
1        08:30:00  10:21:00     (10-11]
1        09:10:00  11:30:00     (11-12]
2        09:15:00  10:15:00     (10-11]
2        09:35:00  10:11:00     (10-11]
3        09:45:00  11:12:00     (11-12]
...

Я хотел бы создать серию, выглядящую следующим образом:

interval timestamp unique_ids
(10-11]  08:00:00  1
         08:30:00  1
         09:15:00  1
         09:35:00  1
(11-12]  09:10:00  1  
         09:45:00  2

Цель состоит в том, чтобы подсчитать, для каждого временного интервала, сколько уникальных идентификаторов имели соответствующие target_time в пределах интервала в их временной метке.Обратите внимание, что target_time для каждого идентификатора может изменяться в разные временные метки.Например, для идентификатора 1 интервал составляет (10-11) с 08:00:00 до 08:30:00, но затем он изменяется на (11-12] в 09:10:00. Следовательно, в 09:15:00 Я не хочу подсчитывать идентификатор 1 в полученной серии.

Я пробовал подход groupby -> expand -> np.unique, но он не дает желаемого результата:

df.set_index('timestamp').groupby('interval').id.expanding().apply(lambda x: np.unique(x).shape[0])

interval timestamp unique_ids
(10-11]  08:00:00  1
         08:30:00  1
         09:15:00  2
         09:35:00  2
(11-12]  09:10:00  1  
         09:45:00  2

Любой намек на то, как я могу подойти к этой проблеме? Я хочу максимально использовать процедуры pandas, чтобы сократить время вычислений, поскольку длина DataFrame составляет 1453076 ...

Большое спасибо заранее!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...