Подтвердить что ты не робот

Данные времени не соответствуют формату

Я получаю следующую ошибку:

time data '07/28/2014 18:54:55.099000' does not match format '%d/%m/%Y %H:%M:%S.%f'

Но я не вижу, какой параметр неверен в %d/%m/%Y %H:%M:%S.%f?

Это код, который я использую.

from datetime import datetime
time_value = datetime.strptime(csv_line[0] + '000', '%d/%m/%Y %H:%M:%S.%f')

Я добавил и удалил 000, но получаю ту же ошибку.

4b9b3361

Ответ 1

У вас есть месяц и день:

'%m/%d/%Y %H:%M:%S.%f'

28 никогда не будет соответствовать диапазону для параметра месяца %m в противном случае.

С %m и %d в правильном порядке работы синтаксического анализа:

>>> from datetime import datetime
>>> datetime.strptime('07/28/2014 18:54:55.099000', '%m/%d/%Y %H:%M:%S.%f')
datetime.datetime(2014, 7, 28, 18, 54, 55, 99000)

Вам не нужно добавлять '000'; %f может правильно разобрать более короткие номера:

>>> datetime.strptime('07/28/2014 18:54:55.099', '%m/%d/%Y %H:%M:%S.%f')
datetime.datetime(2014, 7, 28, 18, 54, 55, 99000)

Ответ 2

В то время как вышеприведенный ответ на 100% полезен и правилен, я хотел бы добавить следующее, потому что только комбинация вышеупомянутого ответа и чтение через документ pandas помогли мне:

2-значный/4-значный год

Следует отметить, что для анализа через 2-значный год, например, '90', а не '1990', вместо %Y требуется %Y.

Автоматически вывести дату и время

Если синтаксический анализ с заранее определенным форматом по-прежнему не работает для вас, попробуйте использовать флаг infer_datetime_format=True, например:

yields_df['Date'] = pd.to_datetime(yields_df['Date'], infer_datetime_format=True)

Обратите внимание, что это решение работает медленнее, чем использование заранее определенного формата.

Ответ 3

Чтобы сравнить дату, вы можете попробовать это. Формат Datetime можно изменить

from datetime import datetime

>>> a = datetime.strptime("10/12/2013", "%m/%d/%Y")
>>> b = datetime.strptime("10/15/2013", "%m/%d/%Y")
>>> a>b
False

Ответ 4

у меня есть формат даты и времени 1.07.2003 0:00, и я использую "% m/% d/% y% H:% M", но все еще показывает.