Как прокомментировал Крис, невозможно конвертировать только часы и минуты в формат даты и времени. Но вы можете использовать timedeltas для решения вашей проблемы.
import datetime
import pandas as pd
def to_timedelta(date):
date = pd.to_datetime(date)
try:
date_start = datetime.datetime(date.year, date.month, date.day, 0, 0)
except TypeError:
return pd.NaT # to keep dtype of series; Alternative: pd.Timedelta(0)
return date - date_start
df['open'].apply(to_timedelta)
Вывод:
5 NaT
6 16:00:00
7 14:30:00
8 NaT
9 18:45:00
Name: open, dtype: timedelta64[ns]
Теперь вы можете использовать datetime.timedelta для добавления / вычитания минут, часов или чего-либо еще:
df['open'] + datetime.timedelta(minutes=15)
Вывод:
5 NaT
6 16:15:00
7 14:45:00
8 NaT
9 19:00:00
Name: open, dtype: timedelta64[ns]
Кроме того, довольно просто вернуться к полному времени:
df['open'] + datetime.datetime(2020, 4, 4)
Вывод:
5 NaT
6 2020-04-04 16:00:00
7 2020-04-04 14:30:00
8 NaT
9 2020-04-04 18:45:00
Name: open, dtype: datetime64[ns]