Форматы времени Python не совпадают? [дубликат]

avatar
Wallace
1 июля 2021 в 15:50
37
2
-2

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

 time data '1/1/03 0:00' does not match format '%m/%d/%Y %H:%M' (match)

Этот формат не соответствует..? Я новичок в работе с форматами даты и времени, поэтому это меня немного сбивает с толку.

Это строка кода, которую я использую:

date_time = pd.to_datetime(df['time'], format='%m/%d/%Y %H:%M')

Обратите внимание, что используемый CSV-файл 'df' имеет 1 столбец с именем "time", поэтому я получаю все возможные его значения с помощью df['time'].

Я должен прокомментировать, что это:

12/31/16 23:00

это еще одна запись, так что я знаю, что это месяц/день/год, потому что год состоит только из двух цифр?

Источник
Chris
1 июля 2021 в 15:55
1

strftime.org — довольно хороший ресурс для этого

Ture Pålsson
1 июля 2021 в 15:59
1

Серьезно, исправьте формат данных. Разве мы ничему не научились из фиаско Y2k?

Ответы (2)

avatar
itroulli
1 июля 2021 в 15:55
2

Проблема связана с совпадением года. %Y соответствует году и веку, поэтому в этом случае он должен соответствовать 2003. Вместо этого следует использовать %y.

date_time = pd.to_datetime(df['time'], format='%m/%d/%y %H:%M')
Wallace
1 июля 2021 в 15:57
0

Это работает, спасибо

avatar
Stryder
1 июля 2021 в 15:59
1

В вашем случае проблема в годе:

date_time = pd.to_datetime(df['time'], format='%m/%d/%y %H:%M') # the lowercase y fixes it

Это в основном то же самое, что и в модуле datetime:

from datetime import datetime as dt;

dt.strptime('1/1/03 0:00', '%m/%d/%y %H:%M')
>> datetime.datetime(2003, 1, 1, 0, 0)

dt.strptime('1/1/03 0:00', '%m/%d/%Y %H:%M')
>> ## ERROR

Все коды уточнить