Преобразование / использование времени timedelta в datetime - PullRequest
0 голосов
/ 24 августа 2018

У меня есть фрейм данных с двумя столбцами: 1 timedelta 'Time' и 1 datetime 'DateTime'.

Мой столбец timedelta просто содержит / отображает обычное обычное время, оно никогда не превышает 24 часа. Это не используется как «timedetla», просто «время». Просто так получается, когда pandas получает данные из моей базы данных.

Я хочу новый столбец 'NewDateTime' с датой из даты и времени и временем из времени дельты.

Итак, у меня есть это:

        Time       DateTime     
1       09:01:00   2018-01-01 10:10:10
2       21:43:00   2018-01-01 11:11:11
3       03:20:00   2018-01-01 12:12:12

И я хочу это:

        Time       DateTime                NewDateTime
1       09:01:00   2018-01-01 10:10:10     2018-01-01 09:01:00
2       21:43:00   2018-01-01 11:11:11     2018-01-01 21:43:00
3       03:20:00   2018-01-01 12:12:12     2018-01-01 03:20:00

Сначала я попытался установить для часов, минут и секунд в столбце DateTime значение 0. Затем я планировал добавить timedelta к datetime.

Но когда я попытался сделать:

df['NewDateTime'] = df['DateTime'].dt.replace(hour=0, minute=0, second=0)

Я получаю AttributeError: 'DatetimeProperties' object has no attribute 'replace'

1 Ответ

0 голосов
/ 24 августа 2018

Используйте Series.dt.floor для времени удаления:

df['NewDateTime'] = df['DateTime'].dt.floor('D') + pd.to_timedelta(df['Time'])
#if necesary convert times to strings
#df['NewDateTime'] = df['DateTime'].dt.floor('D') + pd.to_timedelta(df['Time'].astype(str))
print (df)
       Time            DateTime         NewDateTime
1  09:01:00 2018-01-01 10:10:10 2018-01-01 09:01:00
2  21:43:00 2018-01-01 11:11:11 2018-01-01 21:43:00
3  03:20:00 2018-01-01 12:12:12 2018-01-01 03:20:00
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...