Объединение строк в DataFrame
У меня есть датафрэйм
Я пытаюсь посчитать сколько времени ID с номером (8690950461832000) находился в каждой зона (признак Идентификатор зоны).
Т.е сделать группировку примерно так:

В группировке надо посчитать нахождение ID в зоне. (это разница признаков "Время последнего взаимодействия" первой регистрации нахождения в первой зоны и первой регистрации в следующей зоне). По последней зоне по идее 0, тк она последняя.
И на выходе что-то вроде такого (Надеюсь время правильно посчитал):
Ответы (1 шт):
Автор решения: strawdog
→ Ссылка
Если я правильно понял вопрос, то можно попробовать так:
res = df.groupby([(df["Идентификатор зоны"] != df["Идентификатор зоны"]
.shift()).cumsum(), "ID", "Идентификатор зоны"], as_index=False)["Время последнего взаимодействия"].first().reset_index(drop=True)
res["Время в зоне"] = res["Время последнего взаимодействия"].diff().shift(-1).fillna(pd.Timedelta(seconds=0))
res:
ID Идентификатор зоны Время последнего взаимодействия Время в зоне
0 8690950461832000 2 2021-03-17 08:22:17 0 days 00:06:58
1 8690950461832000 1 2021-03-17 08:29:15 0 days 00:02:34
2 8690950461832000 2 2021-03-17 08:31:49 0 days 00:57:51
3 8690950461832000 1 2021-03-17 09:29:40 0 days 00:00:43
4 8690950461832000 2 2021-03-17 09:30:23 0 days 00:00:00

