Как преобразовать эти 2 столбца даты / времени в 1? - PullRequest
0 голосов
/ 25 июня 2018

Я провел несколько часов, читая и пробуя что-то из документов Python и Pandas, и я не получаю то, что мне нужно ...

У меня есть 2 столбца - один называется DATE_GMT, а другойназывается TIME_GMT.Столбец даты не требует пояснений.Столбец ВРЕМЯ показывает «от 0» до «24» относительно того, какой час это ...

enter image description here

Как преобразовать датуи столбцы времени, а затем объединить их, чтобы они поддерживали время POSIX?

Ответы [ 3 ]

0 голосов
/ 25 июня 2018

Используйте комбинацию pd.to_datetime и pd.to_timedelta

pd.to_datetime(df.date) + pd.to_timedelta(df.hour, unit='h')

0   2016-01-20 20:00:00
1   2016-01-21 21:00:00
2   2016-01-21 22:00:00
3   2016-01-21 23:00:00
dtype: datetime64[ns]
0 голосов
/ 25 июня 2018

Вы можете напрямую взять эти два столбца как две строки и добавить их вместе.Затем используйте to_datetime из pandas и укажите формат строки, чтобы обновить его как значение даты и времени.

Код

d = pd.DataFrame({'DATE_GMT':['20-JAN-16','20-JAN-16','20-JAN-16','20-JAN-16','20-JAN-16'],
                  'HOUR_GMT':[23,23,23,23,23]})
d['combined_date'] = pd.to_datetime(d['DATE_GMT'].astype(str)+' '+d['HOUR_GMT'].astype(str),format='%d-%b-%y %H') 

    DATE_GMT   HOUR_GMT combined_date
0   20-JAN-16      23   2016-01-20 23:00:00
1   20-JAN-16      23   2016-01-20 23:00:00
2   20-JAN-16      23   2016-01-20 23:00:00
3   20-JAN-16      23   2016-01-20 23:00:00
4   20-JAN-16      23   2016-01-20 23:00:00
0 голосов
/ 25 июня 2018

Для этого вы можете использовать функцию to_datetime, передав ей фрейм данных со значениями даты и времени.

## sample data 
df = pd.DataFrame({'date':['20-JAN-2016','21-JAN-2016','21-JAN-2016','21-JAN-2016'],
                   'hour':[20,21,22,23]})

# convert to datetime
df['date'] = pd.to_datetime(df['date'])

# extract date components
df['year'] = df.date.dt.year
df['month'] = df.date.dt.month
df['day'] = df.date.dt.day

# remove date
df.drop('date', axis=1, inplace=True)

df['full_date'] = pd.to_datetime(df)

print(df)

   hour  year  month  day           full_date
0    20  2016      1   20 2016-01-20 20:00:00
1    21  2016      1   21 2016-01-21 21:00:00
2    22  2016      1   21 2016-01-21 22:00:00
3    23  2016      1   21 2016-01-21 23:00:00
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...