Pandy: jak używać isin dla wielu kolumn


Aby filtrować na podstawie wielu kolumn w ramce DataFrame pandy, można użyć następujących metod z funkcją pandas isin() :

Metoda 1: Filtruj, gdy wiele kolumn ma równe wartości

 df = df[df[[' team ', ' position ']]. isin ([' A ',' Guard ']). all (axis= 1 )]

Ten konkretny przykład filtruje ramkę DataFrame pod kątem wierszy, w których kolumna zespołu ma wartość „A” , a kolumna pozycji jest równa „Ochrona”.

Metoda 2: Filtruj, gdy co najmniej jedna kolumna ma określoną wartość

 df = df[df[[' team ', ' position ']]. isin ([' A ',' Guard ']). any (axis= 1 )]

Ten konkretny przykład filtruje ramkę DataFrame pod kątem wierszy, w których kolumna zespołu ma wartość „A” lub kolumna pozycji jest równa „Ochrona”.

Poniższe przykłady pokazują, jak w praktyce używać każdej metody z następującą ramką DataFrame pand:

 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

Przykład 1: Filtr, w przypadku którego wiele kolumn ma równe określone wartości

Możemy użyć poniższej składni, aby przefiltrować ramkę DataFrame tak, aby zawierała tylko wiersze, w których kolumna zespołu jest równa „A” , a kolumna pozycji jest równa „Ochrona”.

 #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

Należy pamiętać, że w filtrowanej ramce danych pozostają tylko wiersze, w których kolumna zespołu jest równa „A” , a kolumna pozycji ma wartość „Strażnik”.

Przykład 2: Filtr, w którym co najmniej jedna kolumna ma określoną wartość

Możemy użyć poniższej składni, aby przefiltrować ramkę DataFrame tak, aby zawierała tylko wiersze, w których kolumna zespołu jest równa „A” lub kolumna pozycji jest równa „Ochrona”.

 #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

Należy pamiętać, że w filtrowanej ramce danych pozostają tylko wiersze, w których kolumna zespołu jest równa „A” lub kolumna pozycji ma wartość „Strażnik”.

Uwaga : pełną dokumentację funkcji panda isin() można znaleźć tutaj .

Dodatkowe zasoby

Poniższe samouczki wyjaśniają, jak wykonywać inne typowe zadania w pandach:

Pandy: Jak dodać filtr do tabeli przestawnej
Pandy: jak filtrować „Nie zawiera”
Pandy: jak filtrować wiersze zawierające określony ciąg znaków

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *