pandas.to_datetime с разной длиной строки даты - PullRequest
0 голосов
/ 27 февраля 2019

У меня есть столбец меток времени, которые я хотел бы преобразовать в дату и время в моем фрейме данных pandas.Формат дат - %Y-%m-%d-%H-%M-%S, который pd.to_datetime не распознает.Я вручную ввел следующий формат:

df['TIME'] = pd.to_datetime(df['TIME'], format = '%Y-%m-%d-%H-%M-%S')

Моя проблема в том, что в некоторых случаях нет секунд, поэтому они короче
(format = %Y-%m-%d-%H-%M).

Как можноЯ получаю все эти строки для datetime?

Я думал, что смогу добавить ноль секунд (-0) к концу моих более коротких дат, но я не знаю, как это сделать.

1 Ответ

0 голосов
/ 27 февраля 2019

попробуйте strftime, и если вам нужен правильный формат, и если Pandas не может распознать ваш пользовательский формат даты и времени, вы должны предоставить его явно

from functools import partial

df1 = pd.DataFrame({'Date': ['2018-07-02-06-05-23','2018-07-02-06-05']})
newdatetime_fmt = partial(pd.to_datetime, format='%Y-%m-%d-%H-%M-%S')
df1['Clean_Date'] = (df1.Date.str.replace('-','').apply(lambda x: pd.to_datetime(x).strftime('%Y-%m-%d-%H-%M-%S'))
                                                 .apply(newdatetime_fmt))

print(df1,df1.dtypes)

output:

              Date          Clean_Date
0  2018-07-02-06-05-23 2018-07-02 06:05:23
1     2018-07-02-06-05 2018-07-02 06:05:00 
Date                  object
Clean_Date    datetime64[ns]
...