Образец df
:
Departure Time Offset Dep Arrival Time Offset Arr
0 05:10 +01:00 08:25 +01:00
1 08:05 +01:00 10:10 +01:00
2 11: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
5 13:15 -03:00 20:20 -02:00
Вы можете сначала преобразовать 'Offset Dep'
в timedelta, используя pd.to_timedelta
, но вам нужно будет добавить в :ss
часть строки .:
pd.to_timedelta(df['Offset Dep'].astype(str) + ':00')
Затем вы можете преобразовать 'Departure Time'
в дату и время и добавить дельту времени:
>>> df['Departure Time'].astype('datetime64') + pd.to_timedelta(df['Offset Dep'].astype(str) + ':00')
0 2020-04-24 06:10:00
1 2020-04-24 09:05:00
2 2020-04-24 12:50:00
3 2020-04-24 12:55:00
4 2020-04-24 16:55:00
5 2020-04-24 10:15:00
dtype: datetime64[ns]
Если у вас есть nan
значения, которые вы хотите исключить, например:
Departure Time Offset Dep Arrival Time Offset Arr
0 05:10 +01:00 08:25 +01:00
1 08:05 +01:00 10:10 +01:00
2 11: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
5 NaN NaN NaN NaN
6 13:15 -03:00 20:20 -02:00
Возможно, вы захотите исключить NaN
строки с маской:
mask = df['Offset Dep'].notna()
df.loc[mask, 'Departure Time'] = (df.loc[mask, 'Departure Time'].astype('datetime64') \
+ pd.to_timedelta(df.loc[mask, 'Offset Dep'].astype(str) + ':00')).dt.strftime('%H:%M')
Результат:
Departure Time Offset Dep Arrival Time Offset Arr
0 06:10 +01:00 08:25 +01:00
1 09:05 +01:00 10:10 +01:00
2 12:50 +01:00 12:05 +01:00
3 12:55 +01:00 14:15 +00:00
4 16:55 +02:00 18:40 +01:00
5 NaN NaN NaN NaN
6 10:15 -03:00 20:20 -02:00