У меня есть данные с отметками времени начала и окончания, например:
Start End
0 2019-01-01 00:59 2019-01-01 01:01
1 2019-01-01 01:10 2019-01-01 03:10
И я хочу разделить длительности по часам (то есть, если длительность начинается в 18:59 и заканчивается в 19:05 у нас будет две новые строки, одна из которых начинается в 18:59 и заканчивается в 19:00, а другая начинается в 19:00 и заканчивается в 19:05). Вывод для моего примера dataframe будет:
Start End
0 2019-01-01 00:59 2019-01-01 01:00
1 2019-01-01 01:00 2019-01-01 01:01
2 2019-01-01 01:10 2019-01-01 02:00
3 2019-01-01 02:00 2019-01-01 03:00
4 2019-01-01 03:00 2019-01-01 03:10
Я пробовал несколько вещей, используя методы dt.ceil и dt.floor, чтобы выяснить, нужно ли мне разрывать строку или нет, но я могуНе могу придумать плавный способ сделать все преобразования без циклического прохождения строки за строкой.
Кадры данных могут быть созданы со следующими фрагментами:
start = pd.DataFrame({
'Start': ['2019-01-01 00:59', '2019-01-01 01:10'],
'End': ['2019-01-01 01:01', '2019-01-01 03:10']
})
finish = pd.DataFrame({
'Start': ['2019-01-01 00:59', '2019-01-01 01:00', '2019-01-01 01:10', '2019-01-01 02:00', '2019-01-01 03:00'],
'End': ['2019-01-01 01:00', '2019-01-01 01:01', '2019-01-01 02:00', '2019-01-01 03:00', '2019-01-01 03:10']
})