преобразование ячейки фрейма данных в NaN с использованием логической маски

#python #pandas

Вопрос:

У меня есть фрейм данных(df), который выглядит следующим образом:введите описание изображения здесь

Я хочу преобразовать все ячейки, в которых есть»…», в ячейки, содержащие NaN. Я создал логическую маску mask = df['Energy Supply per Capita'] !="…" , чтобы изолировать ячейки с номерами, но когда я применяю маску df.where(mask).head() , она преобразует всю строку в NaN, а не только одну ячейку, так что df выглядит следующим образом: введите описание изображения здесь

как я могу сделать так, чтобы только одна конкретная ячейка была преобразована в NaN?

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

1. df.replace({"...": pd.NA}, inplace=True) ?

Ответ №1:

Вы можете использовать replace() .

 df.replace({"...": pd.NA}, inplace=True)  

Ответ №2:

Используйте числовое с ошибками принуждение

 cols = ['Energy Supply per Capita'] df[cols] = df[cols].apply(pd.to_numeric,errors='coerce')  

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

1. Можете ли вы объяснить, что это даст? Я пытался найти его, но все еще в замешательстве.

2. Я думаю, что вы получили ответ, так что поздравляю, кстати, я предлагаю использовать встроенный метод с именем pd.to_numeric , который можно использовать для преобразования всех возможных типов данных в числовой тип, кроме того, с аргументом errors='coerce' , в который он преобразует ваши ... данные NaN , вместо того, чтобы выдавать ошибку.