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