У меня есть набор данных смен, которые идут с 6:00 до 18:00 до 6:00 и т. Д.Я хочу сгруппировать их с частотой 12 часов.
Данные выглядят следующим образом:
time Shift
2018-01-01 06:00:00+00:00 1
2018-01-01 07:00:00+00:00 1
2018-01-01 08:00:00+00:00 1
2018-01-01 09:00:00+00:00 1
2018-01-01 10:00:00+00:00 1
2018-01-01 11:00:00+00:00 1
2018-01-01 12:00:00+00:00 1
2018-01-01 13:00:00+00:00 1
2018-01-01 14:00:00+00:00 1
2018-01-01 15:00:00+00:00 1
2018-01-01 16:00:00+00:00 1
2018-01-01 17:00:00+00:00 1
2018-01-01 18:00:00+00:00 4
2018-01-01 19:00:00+00:00 4
2018-01-01 20:00:00+00:00 4
2018-01-01 21:00:00+00:00 4
Для этого я бы использовал следующее:
shift_df.groupby([pd.Grouper(freq='12H',base = 6)]).first()
Это создает следующее:
2018-01-01 06:00:00+00:00 1
2018-01-01 18:00:00+00:00 4
2018-01-02 06:00:00+00:00 2
2018-01-02 18:00:00+00:00 4
2018-01-03 06:00:00+00:00 2
2018-01-03 18:00:00+00:00 4
Это именно то, что я хочу.Однако существует серьезная проблема, когда часы меняются (я работаю по британскому времени).
В конце марта часы меняются на час.Однако период работы остается тем же с 6:00 до 18:00.Это означает, что есть одна смена в начале года, которая отличается на 1 час, и одна в конце года.Однако, потому что я сказал, что нужно брать 12-часовой период, полученные результаты неверны для середины года (на час).
Либо мне нужен 12-часовой период, чтобы учесть смещение времени(поэтому существует один период в году, который составляет 13 часов, а другой - 11 часов), или мне нужно указать, что он разделяет периоды на 6:00 и 18:00, но только в местном времени.
Я пытался использовать время UTC и «Европа / Лондон».Однако, поскольку это «правильно» занимает 12 часов, оно никогда не отражает правильно данные.
Большое спасибо