Панды фильтруют фрейм данных по одному условию в нескольких столбцах

1

У меня есть dataframe с 30 столбцами, каждая ячейка содержит 1 или 0.

Я хотел бы отфильтровать dataframe для каждого из 4 конкретных столбцов == 1.

Прямо сейчас, это должны быть цепочки масок, таких как:

df[(df['col1'] == 1) | (df['col2'] == 1) | (df['col3'] == 1) | (df['col4'] == 1)]

Есть ли более простой и масштабируемый способ сделать это? Что-то вроде составления списка имен столбцов и использование нотации среза для проверки всех логических условий за один раз:

col_list = ['col1', 'col2', 'col3', 'col4']

df[df[col_list] == 1]
  • 5
    Вы хотите df = df[df[col_list].eq(1).any(1)] .
  • 4
    или df[df[col_list].any(1)]
Показать ещё 3 комментария
Теги:
pandas

1 ответ

0

Попробуй это:

col_df=list(df) # get all the column names 
filtered_df=df[df[col_df].values==1]
  • 0
    Это сработало бы, если бы я хотел, чтобы все столбцы оценивались по условию, вопрос был только для подмножества, но метод тот же, спасибо!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню