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