Фрейм данных Pandas — удаление столбцов, если все значения в столбце равны 0,1, nan

#python #pandas #dataframe

#python #pandas #фрейм данных

Вопрос:

Предполагая, что это фрейм данных. Я хочу удалить столбцы, если все значения в столбцах равны 0,1, NaN.

 df = pd.DataFrame([[1,0,0,0], [0,0,1,0],[2,'NaN',1,0]])
  

введите описание изображения здесь

Конечным результатом должен быть только первый столбец «0» и отбрасывать остальные столбцы.

Ответ №1:

Попробуйте:

 lst = [0, 1, 'NaN']

mask = df.isin(lst).all(axis=0)
df.drop(mask.loc[mask].index, axis=1, inplace=True)
  

по сути, это гарантирует, что вы отбросите все столбцы, для которых указаны все значения lst .

Ответ №2:

используйте это:

df.drop([1,2])

Смотрите также документацию

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

1. Вам было бы полезно объяснить свой ответ. Вы могли бы сказать, проверьте документ pandas. Ну, для таких новичков, как я, это тоже сбивает с толку. pandas.pydata.org/pandas-docs/stable/reference/api/… Одной полезной вещью было бы указать ответ с именованными параметрами: df.drop(labels=[1,2]) Хорошо, немного менее запутанно. Но работает ли это вообще? Это может сработать для этого конкретного набора данных, но я не думаю, что это удовлетворяет цели вопроса — не так ли?