Передайте значение объекта datetime по умолчанию для pandas.to_datetime () - PullRequest
0 голосов
/ 16 мая 2018

У меня есть некоторые даты в строке с разными форматами, которые я конвертирую в объекты даты и времени, используя to_datetime(). Однако в списке строк также есть некоторые значения мусора, которые я хочу преобразовать в дату по умолчанию.

import pandas as pd
import datetime as dt

print(df)

       dates
0   2018-02-12
1   2018-03-19
2   12-24-2018
3   garbage

Я использую errors='coerece', чтобы предотвратить исключение. Он выдает NaT, который я хочу преобразовать в дату по умолчанию 2018-12-31, в моем случае.

df['dates'] = pd.to_datetime(df['dates'], errors='coerce')

Ниже результата.

      dates
0   2018-02-12
1   2018-03-19
2   2018-12-24
3   NaT

Подход:

Я проверяю, является ли данное значение действительным датой-временем или нет. Если нет, поместите объект datetime по умолчанию. Но по какой-то причине он выдает все значения по умолчанию.

df['dates'].apply(lambda x: dt.datetime(2018,12,31) if x is not dt.datetime else x)

Токовый выход

     dates
0   2018-12-31
1   2018-12-31
2   2018-12-31
3   2018-12-31

Ожидаемый результат:

     dates
0   2018-02-12
1   2018-03-19
2   2018-12-24
3   2018-12-31

Есть ли способ задать дату по умолчанию для функции to_datetime (), чтобы она не производила NaT? Если нет, как я могу поставить даты по умолчанию после этого?

1 Ответ

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

Вам нужно просто добавить fillna в конце после pd.to_datetime call

pd.to_datetime(df['dates'], errors='coerce').fillna(pd.to_datetime('2018-12-31'))
Out[217]: 
0   2018-02-12
1   2018-03-19
2   2018-12-24
3   2018-12-31
Name: dates, dtype: datetime64[ns]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...