Рассчитать разницу во времени между временами с помощью столбца смещения времени

У меня есть кадр данных со следующей информацией:

         Departure Time  Offset Dep  Arrival Time   Offset Arr
0          07:10           +01:00        08:25         +01:00
1          09:05           +01:00        10:10         +01:00
2          10:50           +01:00        12:05         +01:00
3          11:55           +01:00        14:15         +00:00
4          14:55           +02:00        18:40         +01:00


df.dtypes

Departure Time      object
Offset Departure    object
Arrival Time        object
Offset Arrival      object
dtype: object

Я хотел бы рассчитать продолжительность времени: время прибытия + смещение прибытия - время отправления - смещение отправления

Сначала я попытался преобразовать их все в формат времени, но смог сделать это только с фактическим временем, а не со сдвигом времени:

df["Arrival Time"] = pd.to_datetime(df ["Arrival Time"]).dt.time
df["Departure Time"] = pd.to_datetime(df ["Departure Time"]).dt.time

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

Поскольку я хочу использовать продолжительность времени для расчета науки о данных (Gradient Boosting), было бы здорово, если бы вы могли предложить формат продолжительности, который можно было бы сразу подключить к алгоритму.


person Huebschi    schedule 24.04.2020    source источник


Ответы (1)


Вы можете попробовать следующий метод:

import pandas as pd
import datetime

#date time 
df["Departure Time"] = pd.to_datetime(df["Departure Time"])
df["Arrival Time"] = pd.to_datetime(df["Arrival Time"])

#time delta
df["Offset Dep"]=pd.to_timedelta(df["Offset Dep"], unit='hour')
df["Offset Arr"]=pd.to_timedelta(df["Offset Arr"], unit='hour')


df["Time Duration"]= df["Arrival Time"] + df["Offset Dep"] - df["Departure Time"] - df["Offset Dep"]

Вы конвертируете свои столбцы смещения в дельту времени, а затем можете добавить их в свои столбцы даты и времени.

person Nicole Douglas    schedule 24.04.2020
comment
Я получаю SyntaxError: неверный синтаксис - person Huebschi; 24.04.2020
comment
Я удалил теперь дополнительный пробел - person Nicole Douglas; 24.04.2020
comment
Я получаю сообщение об ошибке уже с первой линией дельты времени df[Offset Dep]=pd.to_timedelta(df[Offset Dep], unit='hour')) - person Huebschi; 24.04.2020
comment
У него была лишняя скобка - person Nicole Douglas; 24.04.2020
comment
Теперь я получаю эту ошибку: ValueError: ожидаемый формат чч: мм: сс - person Huebschi; 24.04.2020