Объект даты и целое число времени до datetime - PullRequest
0 голосов
/ 06 мая 2020

Все, у меня есть датафрейм со столбцом даты и столбцом часа. Я пытаюсь объединить их в одну метку времени. Я пробовал много решений, доступных с использованием datetime.datetime.combine, и просто неявно извлекал день месяца и год и создавал с ним отметку даты и времени, но все это приводило к некоторой ошибке.

    idOnController  date        eventTime           Energy  hour
0   5014            2018-05-31  2018-05-31 01:00:00 26.619  0
2   5014            2018-06-02  2018-06-02 02:00:00 29.251  0
3   5014            2018-06-03  2018-06-03 03:00:00 30.635  0

Типы данных следующие:

idOnController             int64
date                      object
eventTime         datetime64[ns]
Energy                   float64
hour                       int64
dtype: object

Я хочу объединить дату и час в метку времени, которая выглядит как eventTime, а затем заменить eventTime этим значением.

Ответы [ 2 ]

2 голосов
/ 06 мая 2020

Вы можете:

df['new_date'] = pd.to_datetime(df['date']) + df['hour'] * pd.to_timedelta('1H')

Вывод df.dtypes:

idOnController             int64
date                      object
eventTime         datetime64[ns]
Energy                   float64
hour                       int64
new_date          datetime64[ns]
dtype: object

Если вы хотите иметь строковые отметки времени, вы можете сделать

df['new_date'] = df['new_date'].dt.strftime('%Y-%m-%d %H:%M:%S')
1 голос
/ 06 мая 2020

Другой способ сделать это (хотя и немного более подробно!):

df['date'] = pd.to_datetime(df['date'])
df['year'] = df.date.dt.year
df['month'] = df.date.dt.month
df['day'] = df.date.dt.day

df['date'] = pd.to_datetime(df[['year','month','day','hour']])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...