Как рассчитать временную дельту в фрейме данных pandas?

       ip  app  device  os  channel          click_time  is_attributed  
0   83230    3       1  33      888 2017-11-06 14:32:21              0
1   17357    3       1  19      379 2017-11-06 14:33:34              0
2   35810    3       1  13      379 2017-11-06 14:34:12              0
3   45745   14       1  33      888 2017-11-06 14:34:52              0
4  161007    3       1  13      379 2017-11-06 14:35:08              0

Вот фрейм данных, и я хочу добавить один столбец, который представляет значение разницы времени (в секундах) между каждым указанным условием. Например, возьмем os-канал в качестве идентификатора, а timedelta в строке 3 (os = 33 и канал = 888) должен быть промежутком времени от последней просмотренной записи os = 33 и канал = 88, которую можно найти в строке-0. Таким образом, timedelta должен быть промежутком между 2017-11-06 14:34:52 и 2017-11-06 14:32:21. Если раньше не было os = 33 и канал = 888, результат должен быть Nan. Итак, как я могу реализовать это в пандах?

0
0
112
1

Ответы 1

Предполагая, что click_time уже является datetime

df.groupby([“os”, “channel”]).click_time.diff()

Создать новый столбец

df.assign(click_diff=df.groupby([“os”, “channel”]).click_time.diff())

Другие вопросы по теме