У меня есть отсортированный pandas фрейм данных, который выглядит следующим образом:
SessionNumber Timestamp_start Timestamp_complete Activity ColB ColC
2 2018-02-11 14:17:00 2018-02-11 14:21:00 "A" 3 4
2 2018-02-11 14:21:00 2018-02-11 14:22:30 "A" 3 4
2 2018-02-11 14:23:00 2018-02-11 14:28:30 "A" 3 4
2 2018-02-11 14:29:00 2018-02-11 14:31:30 "B" 3 4
2 2018-02-11 14:33:00 2018-02-11 14:35:30 "A" 3 4
...
3 2018-02-12 08:44:00 2018-02-12 08:50:30 "A" 2 1
3 2018-02-12 08:51:00 2018-02-12 08:51:30 "A" 2 1
Я хочу объединить те же действия, которые следовали друг за другом, в одну новую строку в зависимости от SessionNumber. Результат из этого примера должен быть следующим:
SessionNumber Timestamp_start Timestamp_complete Activity ColB ColC
2 2018-02-11 14:17:00 2018-02-11 14:28:30 "A" 3 4
2 2018-02-11 14:29:00 2018-02-11 14:31:30 "B" 3 4
2 2018-02-11 14:33:00 2018-02-11 14:35:30 "A" 3 4
...
3 2018-02-12 08:44:00 2018-02-12 08:51:00 "A" 2 1
Кадр данных отсортирован в следующем порядке: SessionNumber, Timestamp_start, Activity
Внутри того же SessionNumber я хочу объединить записи, которые следующие ( по метке времени) непосредственно друг за другом. Я хочу объединять строки только в том случае, если они имеют одинаковые значения в Activity, ColB и Col C и когда разница во времени между отметкой времени завершения и начала находится под определенным порогом (например, 30 секунд). Поскольку фрейм данных уже отсортирован, наиболее очевидной идеей является итерация по строкам и объединение каждых 2 строк, соответствующих условиям. Например, отбросив одну строку и установив новую метку Timestamp_complete на оставшуюся.
Но итерация - это плохая идея в pandas ...
Есть ли другая идея сделать это?
Спасибо!