Сделать столбец даты в стандартном формате, используя панд - PullRequest
1 голос
/ 17 июня 2019

Как я могу использовать панд, чтобы сделать столбец дат в стандартном формате, т.е. 12-08-1996.Данные, которые у меня есть:

enter image description here

Я пробовал некоторые методы поиска в Интернете, но не нашел тот, где он определяет формат и делаетэто стандарт.

Вот что я кодировал:

df = pd.read_excel(r'date cleanup.xlsx')
df.head(10)
df.DOB = pd.to_datetime(df.DOB) #Error is in this line

Я получаю ошибку:

ValueError: ('Неизвестный формат строки:', '20 \ \ декабрь \ \ 1992 ')

ОБНОВЛЕНИЕ: Использование

for date in df.DOB:
    print(parser.parse(date))

Прекрасно работает, но есть значение 20 \\ декабрь \\ 1992, для которого выдает вышеуказанную ошибку.Так что я не знаком со всеми форматами, которые есть в данных, поэтому я искал технику, которая могла бы автоматически определять ее и преобразовывать в стандартный формат.

1 Ответ

1 голос
/ 17 июня 2019

Вы можете использовать dateparser библиотека:

import dateparser

df = pd.DataFrame(["12 aug 1996", "24th december 2006", "20\\ december \\2007"], columns = ['DOB'])
df['date'] = df['DOB'].apply(lambda x :dateparser.parse(x))

выход

|   |        DOB         |    date    |
|---|--------------------|------------|
| 0 | 12 aug 1996        | 1996-08-12 |
| 1 | 24th december 2006 | 2006-12-24 |
| 2 | 20\ december \2007 | 2020-12-07 |

EDIT

Обратите внимание, что есть настройка STRICT_PARSING, которую можно использовать для обработки исключений:

Вы также можете полностью игнорировать анализ неполных дат, установив STRICT_PARSING

df['date'] = df['DOB'].apply(lambda x : dateparser.parse(x, settings={'STRICT_PARSING': True}) if len(str(x))>6 else None)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...