В pandas я получаю ошибку, когда функция замены фрейма данных не находит значение, подлежащее замене. Как мне с этим справиться?

#python #pandas #replace #data-wrangling

Вопрос:

В моем коде есть строка ниже:

 df.replace({'SCORE':{'N.A.':np.nan}})
 

Я пытаюсь заменить все вхождения «N. A.» в столбце «ОЦЕНКА» на Nan. Это работает для меня до тех пор, пока в столбце есть хотя бы 1 N. A. Если N. A. отсутствует, я получаю ошибку. Я просмотрел документацию по пандам и по всему SO и Google. Не мог бы кто-нибудь, пожалуйста, сказать мне, как заставить функцию замены игнорировать, если с данными нет проблем? Спасибо.

Комментарии:

1. попробуйте окружить его с помощью try-except и пройти через блок except

2. Отлично работает для меня даже без какого-либо «N. A.».: df = pd.DataFrame({'SCORE':[1,2,3]}); df.replace({'SCORE':{'N.A.':np.nan}})

3. Пожалуйста, отредактируйте свой пост, чтобы включить воспроизводимый пример-небольшой фрейм данных, который приведет к этой ошибке (и полной обратной трассировке ошибок, которую вы получаете).

4. Какова ваша версия панды? Это не приводит к ошибке в версии 0.25.3. Может быть, вы используете более старую версию? Вы можете попробовать обновить pandas, чтобы решить проблему без проблем.

5. @tdy: интересно. Когда я запускаю фиктивный пример в вашем комментарии, у меня возникает та же проблема, что и в исходном примере. (Ошибка типа : не удается сравнить типы ndarray(dtype=int64) и str) моя версия pandas-0.20.1

Ответ №1:

Вы можете проверить, существуют ли «N. A.» в «SCORE», прежде чем пытаться заменить их.

 if 'N.A.' in df.SCORE:
    df.SCORE.replace('N.A.', np.nan, inplace=True)