Объединение данных временных рядов в несколько строк по началу и концу в одну - PullRequest
0 голосов
/ 30 апреля 2018

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

|Start   |End     |Description|Value|
|--------|--------|-----------|-----|
|01:02:00|01:05:00|A          |1.0  |
|01:05:00|01:08:00|A          |4.0  |
|01:08:00|01:11:00|A          |4.3  |
|01:11:00|01:15:00|B          |18.2 |
|01:21:00|01:55:00|C          |0.0  |
|01:55:00|02:07:00|A          |1.8  |

Теперь моя цель состоит в том, чтобы использовать искру, чтобы объединить все периоды, которые в основном принадлежат одному большому периоду, вместе, как это:

|Start   |End     |Description|Value(SUM)|
|--------|--------|-----------|----------|
|01:02:00|01:11:00|A          |9.3       |
|01:11:00|01:15:00|B          |18.2      |
|01:21:00|01:55:00|C          |0.0       |
|01:55:00|02:07:00|A          |1.8       |

Итак, как-то выразить это словами: Я хочу объединить две строки, если начало соответствует предыдущему концу и если описание совпадает.

Проблема, с которой я столкнулся, заключается в том, что мне нужно каким-то образом создать какое-то окно, которое содержит согласованные данные, но заканчивается, как только появляется другое описание, или время последнего окончания не равно времени следующего запуска

Я думаю, что я не могу просто использовать groupby над описанием и впоследствии выполнить некоторые агрегации, потому что он пропускает контекст (связное начало / конец) строк.

Я уже пробовал решение с использованием опережений и запаздываний, и я успешно объединил периоды, но не смог позаботиться о значении (и это также выглядело как довольно сложная операция для простой задачи).

Есть ли функция или метод для архивирования этого (в лучшем виде)? Похоже, что это довольно распространенный процесс для данных временных рядов, но я не могу найти никаких ресурсов, связанных с этим.

...