#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
, вместо того, чтобы выдавать ошибку.