Pandas to_datetime игнорировать формат - PullRequest
0 голосов
/ 01 апреля 2020

Я пытался преобразовать дату, хранящуюся в моем фрейме данных, в формат DateTime. В столбце, который я пытаюсь преобразовать, даты хранятся в формате мм / дд / гг .

Это сценарий, который я использовал для преобразования:

df['dt'] = pd.to_datetime(df['dt'], format = '%d-%m-%Y')

Сценарий выполняется без ошибок, преобразуя даты точно, хотя предоставленный формат неверен.

Мой вопрос: почему сценарий не выдал ошибку, если указан неправильный формат?

1 Ответ

0 голосов
/ 01 апреля 2020

Рассмотрим дату 1-2-2020. Теперь, просто посмотрев на дату, вы можете сказать, какая именно это дата? Ответ отрицательный, потому что, если вы не знаете, как отформатирована дата или как была создана дата, т.е. день-месяц-год или месяц-день-год, вы не можете точно сказать, является ли указанная выше дата 1st February 2020 или 2nd January 2020. Итак, ключ здесь - проверка набора данных и его происхождения. Существует несколько методов интуиции, которые вы можете применить к своим данным, например, если данные получены из Соединенных Штатов, общий формат даты - MM/DD/YYYY или для Индии - DD-MM-YY.

SAMPLE

>>> import pandas as pd
>>> df = pd.DataFrame({'dt': ['1-1-2020', '15-2-2020', '3-24-2020']})
>>> df
          dt
0   1-1-2020
1  15-2-2020
2  3-24-2020

CODE - выдает ошибку, как ожидалось

>>> pd.to_datetime(df['dt'], format = '%d-%m-%Y')
Traceback (most recent call last):
  File "/home/vishnudev/anaconda3/envs/sumyag/lib/python3.7/site-packages/pandas/core/tools/datetimes.py", line 448, in _convert_listlike_datetimes
    values, tz = conversion.datetime_to_datetime64(arg)
  File "pandas/_libs/tslibs/conversion.pyx", line 200, in pandas._libs.tslibs.conversion.datetime_to_datetime64
TypeError: Unrecognized value type: <class 'str'>

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/vishnudev/anaconda3/envs/sumyag/lib/python3.7/site-packages/pandas/util/_decorators.py", line 208, in wrapper
    return func(*args, **kwargs)
  File "/home/vishnudev/anaconda3/envs/sumyag/lib/python3.7/site-packages/pandas/core/tools/datetimes.py", line 778, in to_datetime
    values = convert_listlike(arg._values, True, format)
  File "/home/vishnudev/anaconda3/envs/sumyag/lib/python3.7/site-packages/pandas/core/tools/datetimes.py", line 451, in _convert_listlike_datetimes
    raise e
  File "/home/vishnudev/anaconda3/envs/sumyag/lib/python3.7/site-packages/pandas/core/tools/datetimes.py", line 416, in _convert_listlike_datetimes
    arg, format, exact=exact, errors=errors
  File "pandas/_libs/tslibs/strptime.pyx", line 142, in pandas._libs.tslibs.strptime.array_strptime
ValueError: time data '3-24-2020' does not match format '%d-%m-%Y' (match)
...