Pandas - преобразование столбца типа float в дату и время - PullRequest
1 голос
/ 06 января 2020

У меня есть Dataframe с 2 столбцами, которые являются объектами float64. Я пытаюсь преобразовать их в даты.

col1, col2
43835.0, 0.145833
43835.0, 0.166667

Ожидаемый результат:

col1, col2
05/01/2020,3:30:00 AM
05/01/2020, 4:00:00 AM

Когда я пытаюсь pd.to_datetime(df['col1']), он преобразует значения в 1970-01-01 00:00:00.000043835 и 1970-01-01 соответственно

1 Ответ

2 голосов
/ 06 января 2020

Сначала возможно преобразование в первый столбец datetimes, а затем в timedeltas:

df['col1'] = pd.to_timedelta(df['col1'], unit='d') + pd.datetime(1899, 12, 30)
df['col2'] = pd.to_timedelta(df['col2'], unit='d').dt.floor('S')
print (df)
        col1     col2
0 2020-01-05 03:29:59
1 2020-01-05 04:00:00

Одна идея для пользовательских дат и времени, но из-за точности вывода немного отличается:

s = df['col1'] + df['col2']
dates = pd.to_timedelta(s, unit='d').add(pd.datetime(1899, 12, 30)).dt.floor('S')

df['col1'] = dates.dt.strftime('%d/%m/%Y')
df['col2'] = dates.dt.strftime('%H:%M:%S %p')
print (df)
         col1         col2
0  05/01/2020  03:29:59 AM
1  05/01/2020  04:00:00 AM
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...