У меня есть следующий фрейм данных:
imei event_type time
1107 alarm 2020-01-28 11:32:42+00:00
1107 alarm_restored 2020-01-28 11:32:53+00:00
1107 alarm_emergency 2020-01-28 11:33:03+00:00
1107 alarm_emergency_restored 2020-01-28 11:33:06+00:00
1108 alarm 2020-01-28 11:42:42+00:00
1108 alarm_restored 2020-01-28 11:43:53+00:00
1109 alarm_emergency 2020-01-28 11:53:23+00:00
1109 alarm_emergency 2020-01-28 11:53:23+00:00
1109 alarm_emergency_restored 2020-01-28 11:57:06+00:00
1110 alarm_emergency 2020-01-29 10:23:05+00:00
1111 alarm_restored 2020-01-29 11:10:53+00:00
1112 alarm_emergency_restored 2020-01-29 12:13:23+00:00
Я хочу найти разницу во времени между событиями тревоги и восстановленного типа для каждого пользователя. Я понятия не имею, как поступить с этим. Я попытался вычислить разницу во времени между двумя последовательными строками в pandas Я попытался
df_alarm['time'].diff(3)
и получил:
0 NaT
1 NaT
2 NaT
3 0 days 00:00:23.706000
4 0 days 00:27:28.364000
...
Это не так, как я ожидал Результаты. Я хочу получить результаты в минутах / секундах
ОБНОВЛЕНИЕ:
Я хочу найти разницу во времени для каждого последовательного сигнала тревоги и alarm_restored, alarm_emergency и alarm_emergency_restored, только если они являются последовательными строками. Все остальные строки должны быть NaT.
Ожидаемый результат:
imei event_type time time_diff
1107 alarm 2020-01-28 11:32:42+00:00 NaT
1107 alarm_restored 2020-01-28 11:32:53+00:00 00:00:11
1107 alarm_emergency 2020-01-28 11:33:03+00:00 NaT
1107 alarm_emergency_restored 2020-01-28 11:33:06+00:00 00:00:03
1108 alarm 2020-01-28 11:42:42+00:00 NaT
1108 alarm_restored 2020-01-28 11:43:53+00:00 00:01:11
1109 alarm_emergency 2020-01-28 11:14:27+00:00 NaT
1109 alarm_emergency 2020-01-28 11:53:23+00:00 NaT
1109 alarm_emergency_restored 2020-01-28 11:57:06+00:00 00:03:43
1110 alarm_emergency 2020-01-29 10:23:05+00:00 NaT
1111 alarm_restored 2020-01-29 11:10:53+00:00 NaT
1112 alarm_emergency_restored 2020-01-29 12:13:23+00:00 NaT
Как видите, если есть два последовательных события alarm_ * и одно восстановление после этого (как в строках 1109-1109) Я хочу найти разницу только между строкой 2 и строкой 3 для 1109.