Pandas: как использовать isin для нескольких столбцов
Вы можете использовать следующие методы с функцией pandas isin() для фильтрации на основе нескольких столбцов в DataFrame pandas:
Способ 1. Фильтрация, когда несколько столбцов равны определенным значениям
df = df[df[[' team ', ' position ']]. isin ([' A ',' Guard ']). all (axis= 1 )]
В этом конкретном примере DataFrame фильтруется для строк, в которых столбец команды равен «A» , а столбец позиции — «Охранник».
Способ 2. Фильтр, при котором хотя бы один столбец соответствует определенному значению.
df = df[df[[' team ', ' position ']]. isin ([' A ',' Guard ']). any (axis= 1 )]
В этом конкретном примере DataFrame фильтруется для строк, в которых столбец команды равен «A» или столбец позиции равен «Охранник».
В следующих примерах показано, как использовать каждый метод на практике со следующим DataFrame pandas:
import pandas as pd #createDataFrame df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'], ' position ': ['Guard', 'Guard', 'Forward', 'Forward', 'Guard', 'Guard', 'Forward', 'Forward'], ' points ': [11, 18, 10, 22, 26, 35, 19, 12]}) #view DataFrame print (df) team position points 0 A Guard 11 1 A Guard 18 2 A Forward 10 3 A Forward 22 4 B Guard 26 5 B Guard 35 6 B Forward 19 7 B Forward 12
Пример 1. Фильтр, в котором несколько столбцов соответствуют определенным значениям
Мы можем использовать следующий синтаксис, чтобы отфильтровать DataFrame, чтобы он содержал только строки, в которых столбец команды равен «A» , а столбец позиции — «Охранник».
#filter rows where team column is 'A' and position column is 'Guard' df = df[df[[' team ', ' position ']]. isin ([' A ',' Guard ']). all (axis= 1 )] #view filtered DataFrame print (df) team position points 0 A Guard 11 1 A Guard 18
Обратите внимание, что в отфильтрованном DataFrame остаются только строки, в которых столбец команды равен «A» , а столбец позиции — «Охранник».
Пример 2. Фильтр, в котором хотя бы один столбец соответствует определенному значению.
Мы можем использовать следующий синтаксис, чтобы отфильтровать DataFrame, чтобы он содержал только строки, в которых столбец команды равен «A» или столбец позиции равен «Guard».
#filter rows where team column is 'A' or position column is 'Guard' df = df[df[[' team ', ' position ']]. isin ([' A ',' Guard ']). any (axis= 1 )] #view filtered DataFrame print (df) team position points 0 A Guard 11 1 A Guard 18 2 A Forward 10 3 A Forward 22 4 B Guard 26 5 B Guard 35
Обратите внимание, что в отфильтрованном DataFrame остаются только строки, в которых столбец команды равен «A» или столбец позиции равен «Guard».
Примечание . Полную документацию по функции pandas isin() можно найти здесь .
Дополнительные ресурсы
В следующих руководствах объясняется, как выполнять другие распространенные задачи в pandas:
Pandas: как добавить фильтр в сводную таблицу
Панды: как фильтровать «Не содержит»
Pandas: как фильтровать строки, содержащие определенную строку