Формат SAS date9 в python datetime - PullRequest
       3

Формат SAS date9 в python datetime

0 голосов
/ 26 апреля 2018

У меня есть CSV, отформатированный с выводом [date9.][1] SAS. Но dateutil.parser.parse не распознает его и не pandas.to_datetime (также вопрос, to_datetime использует ли dateutil.parser?).

Они бросают:

  File "C:\redacted\dateutil\parser.py", line 559, in parse
    raise ValueError("Unknown string format")

ValueError: Unknown string format

Формат выглядит следующим образом:

0         12FEB1993
1         12FEB1993
...
16        16NOV1972
17        01SEP2001
18        06JUL2000
19        01FEB2014

Со всем, что имеет значение во втором столбце. Есть ли библиотека, которая может решить эту проблему, или я должен свернуть свою собственную? А если это последнее, то как?

1 Ответ

0 голосов
/ 18 мая 2018

Можете ли вы передать аргумент format в pandas.to_datetime()? Что-то вроде: pandas.to_datetime(date_column, format='%d%b%Y')

Если вы можете получить даты в виде строк, то любая функция синтаксического анализа даты, которая принимает форматирование strptime, должна работать с шаблоном %d%b%Y:

>>> datetime.datetime.strptime('12FEB1993', '%d%b%Y')
datetime.datetime(1993, 2, 12, 0, 0)

EDIT:

Похоже, что pandas.to_datetime() приводит к pandas.Timestamp объектам, которые из-за пределов разрешения ограничены ~ 584 годами, или максимальным годом 2262.

Поскольку у вас есть строка даты, которая выходит за рамки этого, вы можете прочитать столбец как строку, а затем вызвать apply, чтобы преобразовать значения в date объекты:

import datetime
my_df['date'] = my_df['date_text'].apply(lambda x: datetime.datetime.strptime(x, '%d%b%Y').date())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...