У меня есть следующая структура данных в фрейме данных:
Date Hour
01/01/2016 1
01/01/2016 2
01/01/2016 3
01/01/2016 4
... ...
01/01/2016 13
01/01/2016 14
... ...
Данные представляют собой почасовые данные за 2 года. Мне удалось получить даты в формате datetime, но часы были проанализированы отдельно и находятся в отдельном столбце. Как преобразовать часы в объект datetime и добавить их к датам, чтобы получить правильную структуру datetime:
Date Hour DateTime
01/01/2016 1 01/01/2016 01:00:00
01/01/2016 2 01/01/2016 02:00:00
01/01/2016 3 01/01/2016 03:00:00
01/01/2016 4 01/01/2016 04:00:00
... ... ...
01/01/2016 13 01/01/2016 13:00:00
01/01/2016 14 01/01/2016 14:00:00
... ... ...
Изначально они были в виде на 01.01.2016. Я использовал эту строку, чтобы преобразовать их в datetime: df5 ['datum'] = pd.to_datetime (df5 ['datum'], dayfirst = True) .dt.date
В зависимости от того, охватывают ли данные весь период n-го часа дня или определенный момент времени, вы должны подумать, как это представить в вашем DateTime. Как европеец, я бы предложил сопоставить Hour 1 с 00:00:00, поскольку 2016-01-01T24:00:00 описывает тот же момент времени, что и 2016-01-02T00:00:00 (не считая дополнительных секунд и т. д.)
Час 1 представляет собой весь период n-го часа, поскольку данные предназначены для почасового производства электроэнергии в кВтч.






обратитесь к этому и сделайте свой собственный код Вы можете использовать dt.strftime, если вам нужно преобразовать datetime в другие форматы (но обратите внимание, что тогда dtype столбца будет object (string)):
import pandas as pd
df = pd.DataFrame({'DOB': {0: '26/1/2016 ', 1: '26/1/2016 '}})
print (df)
s Дата рождения 0 26.01.2016 1 26.01.2016
df['DOB'] = pd.to_datetime(df.DOB)
print (df)
s Дата рождения 0 2016-01-26 1 2016-01-26
df['DOB1'] = df['DOB'].dt.strftime('%m/%d/%Y')
print (df)
s Дата рождения 1 год 0 26.01.2016 26.01.2016 1 2016-01-26 26.01.2016
Предположим, что ваши 2 столбца «Дата» и «Час» являются строками. Но если нет, то об этом следует позаботиться. Берет 2 строковых столбца, объединяет их, затем преобразует в datetime в определенном формате:
if not is_string_dtype(df['Date']):
df['Date'] = df['Date'].dt.strftime('%m/%d/%Y')
if not is_string_dtype(df['Hour']):
df['Hour'] = df['Hour'].astype(str)
df['DateTime'] = df['Date'] + ' ' + df['Hour']
df['DateTime'] = pd.to_datetime(pd.Series(df['DateTime']), format = "%m/%d/%Y %H")
Данный
>>> df
Date Hour
0 01/01/2016 1
1 01/01/2016 2
2 01/01/2016 3
3 01/01/2016 4
Я бы выдал
>>> df['Date'] = pd.to_datetime(df['Date']) # pick dayfirst=True or False in your code
>>> df
Date Hour
0 2016-01-01 1
1 2016-01-01 2
2 2016-01-01 3
3 2016-01-01 4
а затем построить столбец 'DateTime' путем векторизованного добавления timedeltas:
>>> df['DateTime'] = df['Date'] + pd.to_timedelta(df['Hour'], 'h')
>>> df
Date Hour DateTime
0 2016-01-01 1 2016-01-01 01:00:00
1 2016-01-01 2 2016-01-01 02:00:00
2 2016-01-01 3 2016-01-01 03:00:00
3 2016-01-01 4 2016-01-01 04:00:00
Это то, что я искал, спасибо.
Действительно ли даты в формате datetime? Или это струны?