Как сложить дату_время и время в датафрейм pandas

Дано: в датафрейме есть два столбца: Дата_время и часовой пояс в виде целого чила. Задача получить третий столбец в виде новой Даты_времени_2 равной сумме i-й Дата_время и i-го пояса.

Пробовал так, но неверно - выводит результат сложения всех строк фрейма с i-м поясом:

import pandas as pd
from datetime import datetime, timedelta
import numpy as np

df = pd.DataFrame(
{
'Datetime' :['2024-02-19 12:00:00', '2024-02-18 10:45:22','2024-02-17 22:30:09']
,'time_off_set':['3','6','5']}
)
df['Datetime'] = pd.to_datetime(df['Datetime'],format='%Y-%m-%d %H:%M:%S') #отформатируем в дату_время
df['time_off_set'] = pd.to_numeric(df['time_off_set'])  #отформатируем в целое число
time_off_set_list = df['time_off_set'].tolist()  #превратим столбец в список, чтоб потом работать по номеру индекса
print(time_off_set_list)

df2 = pd.DataFrame()  #создадим пустой ДФ, чтоб наполнять его результатами вычислений

for t in time_off_set_list:  #enumerate(time_off_set_list, start=1):   #внешний цикл по списку целых чисел
    for index, row in df.iterrows():  #внутренний цикл по операциям сложения Даты_времени и часов
        data = pd.DataFrame({'Datetime_new': df['Datetime'] + np.timedelta64(t,'h')}   )
        df['t']=t
df2 = df2.append(data)  #запись в пустой ДФ
print(t,df2)

Результат у меня такой:
[3, 6, 5]

5          Datetime_new
0 2024-02-19 17:00:00
1 2024-02-18 15:45:22
2 2024-02-18 03:30:09

Ответы (1 шт):

Автор решения: Алексей Р

Если правильно понял задачку, то можно так:

df = pd.DataFrame({'Datetime': ['2024-02-19 12:00:00', '2024-02-18 10:45:22', '2024-02-17 22:30:09'], 'time_off_set': ['3', '6', '5']})
df['new_dt'] = pd.to_datetime(df['Datetime'], format='%Y-%m-%d %H:%M:%S').add(pd.to_timedelta(df['time_off_set'].add('h')))
print(df)
              Datetime time_off_set              new_dt
0  2024-02-19 12:00:00            3 2024-02-19 15:00:00
1  2024-02-18 10:45:22            6 2024-02-18 16:45:22
2  2024-02-17 22:30:09            5 2024-02-18 03:30:09
→ Ссылка