#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)