Pandy: jak filtrować elementy „nie zawiera”?


Aby wykonać filtr „Nie zawiera” w ramce danych pandy, możesz użyć następujących metod:

Metoda 1: Filtruj wiersze, które nie zawierają określonego ciągu

 filtered_df = df[df[' my_column ']. str . contains (' some_string ') == False ]

Metoda 2: Filtruj wiersze, które nie zawierają jednego z kilku określonych ciągów

 filtered_df = df[df[' my_column ']. str . contains (' string1|string2|string3 ') == False ]

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 ': ['Nets', 'Rockets', 'Mavs', 'Spurs', 'Kings', 'Nuggets'],
                   ' points ': [18, 22, 19, 14, 14, 11],
                   ' assists ': [5, 7, 7, 9, 12, 9],
                   ' rebounds ': [11, 8, 10, 6, 6, 5]})

#view DataFrame
print (df)

      team points assists rebounds
0 Nets 18 5 11
1 Rockets 22 7 8
2 Mavs 19 7 10
3 Spurs 14 9 6
4 Kings 14 12 6
5 Nuggets 11 9 5

Przykład 1: Filtruj wiersze, które nie zawierają określonego ciągu

Poniższy kod pokazuje, jak filtrować ramkę danych pand pod kątem wierszy, których kolumna zespołu nie zawiera „ets” w nazwie:

 #filter for rows that do not contain 'ets' in the 'team' column
filtered_df = df[df[' team ']. str . contains (' ets ') == False ]

#view filtered DataFrame
print (filtered_df)

    team points assists rebounds
2 Mavs 19 7 10
3 Spurs 14 9 6
4 Kings 14 12 6

Należy pamiętać, że wynikowa ramka DataFrame nie zawiera żadnych wierszy, których wartość w kolumnie zespołu zawiera w nazwie „ets”.

W szczególności z DataFrame wykluczono następujące zespoły:

  • Siatki
  • Rakiety
  • Nuggetsy

Zwróć uwagę, że każda z tych nazw drużyn miała w nazwie „ets”.

Przykład 2: Filtruj wiersze, które nie zawierają jednego z kilku określonych ciągów

Poniższy kod pokazuje, jak filtrować ramkę danych pand pod kątem wierszy, których kolumna zespołu nie zawiera „ets” w nazwie:

 #filter for rows that do not contain 'ets' or 'urs' in the 'team' column
filtered_df = df[df[' team ']. str . contains (' ets|urs ') == False ]

#view filtered DataFrame
print (filtered_df)

    team points assists rebounds
2 Mavs 19 7 10
4 Kings 14 12 6

Należy pamiętać, że wynikowa ramka DataFrame nie zawiera żadnych wierszy, których wartość w kolumnie zespołu zawiera w nazwie „ets” lub „urs”.

Uwaga : | Operator oznacza „LUB” w pandach.

Dodatkowe zasoby

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

Jak filtrować ramkę danych Pandas według wartości kolumn
Jak filtrować wiersze Pandas DataFrame według daty
Jak filtrować ramkę danych Pandas pod wieloma warunkami

Dodaj komentarz

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