как удалить столбец, который включает значение Nan в фрейме данных?

#python #pandas #radio-button

#python #панды #переключатель

Вопрос:

У меня есть функция, которая проверяет, какой переключатель установлен, и на основе выбранного переключателя

  • по строке
  • по столбцу

система удалит записи, содержащие значения Nan

Когда пользователь выбирает перетаскивание по строке, функция работает и возвращает требуемый результат.

Когда пользователь выбирает «перетаскивание по столбцу«, функция завершает работу и отображает приведенную ниже ошибку.

 self.df= self.df.dropna(subset =item, axis= 1 , inplace=False)
  File "F:AIenvlibsite-packagespandascoreframe.py", line 4999, in dropna
    raise KeyError(list(np.compress(check, subset)))
  

Код:

 def getText(self,df,item):
    if (len(item)>0):
        print(item)        
        if self.RD_row.isChecked()==True:
            print("RD_row")
            self.df= self.df.dropna(subset = item , inplace=False)
        elif self.RD_column.isChecked()==True:
            print("RD_column")
            self.df= self.df.dropna(subset =item, axis= 1 , inplace=False)
  

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

1. subset Параметр определяет метки для поиска на другой оси. Когда ось равна 1, она ищет элементы в axis = 0. Он не существует, отсюда и ошибка. Удалите этот параметр, и он удалит столбцы элементов

Ответ №1:

Я нашел решение, используя drop вместо dropna, где строка становится :

 self.df= self.df.drop(item, axis= 1 , inplace=False)
  

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

1. Это приведет к удалению столбца независимо от того, содержит ли он значения NaN или нет? Это то, что вы хотите?

2. @GhandiFloss ваш прямо сейчас я пробую, и он удаляет столбец, независимо от того, содержит он NaN ИЛИ нет, так как удалить выбранный столбец, который включает NaN

3. как я уже сказал в своем комментарии выше, в df.dropna(axis=’columns’) нет параметра подмножества

Ответ №2:

Чтобы удалить строки, содержащие хотя бы одно значение NaN, вы можете использовать

 df = df.dropna()
  

А чтобы удалить столбцы, содержащие хотя бы одно значение NaN, вы можете использовать

 df = df.dropna(axis='columns')
  

Чтобы узнать больше о работе со значениями NaN, вы можете проверить эту документацию.

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

1. я попытался заменить axis = 1 на axis = ‘columns’, но все та же ошибка по-прежнему отображалась

2. @Georges Я думаю, тебе стоит попробовать df = df.dropna(axis=1) .