Данные времени не соответствуют формату
Я получаю следующую ошибку:
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
, но получаю ту же ошибку.
Ответы
Ответ 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", но все еще показывает.