Дельта времени расчета в сводной таблице — Панды Python

#python #pandas #datetime #pivot #timedelta

Вопрос:

Используя сводную таблицу панд python со следующими необработанными данными, я хочу накопить сумму времени между состояниями. Я ищу время отключения состояния и ЗАПУСКА, отфильтрованное по идентификатору и идентификатору ОПЕРАТОРА.

ID государство Дата событие ИДЕНТИФИКАТОР ОПЕРАТОРА_ID SESSION_ID
321 остановка 26.10.2021 14:02 Вниз 1
123 Выполняется 26.10.2021 14:14 вверх Оператор_1 2
123 остановка 26.10.2021 14:35 Вниз 3
321 Выполняется 26.10.2021 16:02 вверх Оператор_2 4
321 остановка 26.10.2021 16:12 Вниз 1
321 Выполняется 26.10.2021 16:13 вверх Оператор_1 4
321 остановка 26.10.2021 16:16 Вниз 1
ID государство ИДЕНТИФИКАТОР ОПЕРАТОРА_ID Time_in_State
321 Выполняется Оператор_1 00:03
Оператор_2 00:10
00:13
остановка 02:01
123 Выполняется 00:21

Первая попытка:

 df = pd.read_csv('StateMonthly.csv', sep=';', header=1, parse_dates=['DATE'], index_col='DATE')  table_time = pd.pivot_table(df, index = ['ID', 'OPERATOR_ID', 'STATE'], values = ['DATE'], aggfunc = {'DATE':np.sum})  

Сумма совершенно бессмысленна. Я должен построить дельту из двух строк и сложить их… но мои навыки работы на python недостаточно хороши 🙁

Дальнейшая проблема: Первый и последний расчет дельты невозможен, поэтому я должен вручную установить его на начало и конец месяца, я думаю.

Комментарии:

1. » Я хочу накопить сумму времени между состояниями » — вы имеете в виду от отметки времени ВВЕРХ до отметки времени ВНИЗ? » отфильтровано по идентификатору и идентификатору ОПЕРАТОРА » — вы имеете в виду сгруппировано по идентификатору и идентификатору ОПЕРАТОРА?

2. Да, сверху ВНИЗ, потому что это УПРАВЛЕНИЕ государством. Я привел пример (вторая таблица). Я ищу время каждого идентификатора и оператора в запущенных и запущенных состояниях (эта информация избыточна в столбце Событие).