У меня есть кадр данных со следующим столбцом даты:
scheduled_departure_utc | run_id | |
---|---|---|
0 | 2021-01-11 13:07:00+00:00 | 13149 |
128 | 2021-01-11 13:07:00+00:00 | 38138 |
1 | 2021-01-11 13:37:00+00:00 | 13153 |
129 | 2021-01-11 13:37:00+00:00 | 38139 |
2 | 2021-01-11 18:07:00+00:00 | 951600 |
130 | 2021-01-11 18:07:00+00:00 | 951600 |
3 | 2021-01-11 18:22:00+00:00 | 951780 |
131 | 2021-01-11 18:22:00+00:00 | 951780 |
132 | 2021-01-11 18:26:00+00:00 | 951201 |
4 | 2021-01-11 18:37:00+00:00 | 951802 |
Я хочу переместить скользящее окно шириной 8 часов по этим данным и подсчитать количество отправлений в этом окне. Единственная сложность заключается в том, что я хочу, чтобы каждое окно вычислялось каждые полчаса, поэтому, например, первое окно может быть с 00:00 до 08:00, затем с 00:30 до 08:30, затем с 01:00 до 09: 00 и т. д.
Используя pandas, я могу сделать следующее:
train_window = df.rolling('8h', on='scheduled_departure_utc').run_id.count()
Однако это дает мне запутанный результат. Фрейм данных выглядит так:
run_id | |
---|---|
0 | 1 |
128 | 2 |
1 | 3 |
129 | 4 |
2 | 5 |
130 | 6 |
3 | 7 |
131 | 8 |
132 | 9 |
4 | 10 |
Я надеялся получить фрейм данных, индекс которого представляет собой дату и время в начале 8-часового окна, но вместо этого индекс представляет собой целое число, чего я не понимаю. Кроме того, поскольку я указал 8h
, я подозреваю, что окно вычисляется каждые 8 часов, а не каждые полчаса, но я не уверен.
Как я могу подсчитать события в скользящем окне, частота которого отличается от размера окна, а затем как я могу получить результаты в формате, индексированном по дате?
У меня Python 3.9.1 и панды 1.2.0.