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