Найти не даты в кадре данных - PullRequest
0 голосов
/ 11 июля 2019

Как я могу найти не даты в определенном поле в кадре данных? У меня есть даты, которые выглядят так:

20260521
20201207
20230130

Когда я смотрю на типы данных, это указывается как «объект». Я сделал несколько попыток привести эти элементы в фактические даты, используя следующий код.

Это на самом деле ничего не делает.

df['MATURITY'] = pd.to_datetime(df['MATURITY'], errors='ignore')

Следующие две попытки выдают ошибку.

df['MATURITY'] = df['MATURITY'].astype('datetime64[ns]')
df['MATURITY'] = pd.to_datetime(df.MATURITY)

Сообщение об ошибке:

ValueError: ('String does not contain a date:', ' ')

Возможно, я могу просто удалить эти записи, но я хотел бы посмотреть, как они выглядят, прежде чем произвольно удалить их. Итак, у меня два вопроса:

1) Как я могу просмотреть эти конкретные записи в поле с именем 'MATURITY', которые выдают ошибки?

2) Кроме того, если я хочу удалить эти конкретные записи, как я могу это сделать?

1 Ответ

2 голосов
/ 11 июля 2019

Согласно docs аргумент errors в pd.to_datetime может быть:

error: {'ignore', 'grow', 'coerce'}, значение по умолчанию «поднимать»

Если «повысить», то неправильный синтаксический анализ вызовет исключение

Если «принудительный», то недействительный анализ будет установлен как NaT

Если «игнорировать», то неверный анализ вернет ввод

Следовательно, вы должны использовать errors='coerce' и работать с NaN s

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

1) Как я могу просмотреть эти конкретные записи в поле «MATURITY», которые выдают ошибки?

df.loc[df['MATURITY'].isnull()]

2) Кроме того, если я хочу удалить эти конкретные записи, как я могу это сделать??

df.dropna(subset='MATURITY')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...