Pandas: wie filtere ich „enthält nicht“-elemente?


Sie können die folgenden Methoden verwenden, um einen „Enthält nicht“-Filter in einem Pandas-DataFrame durchzuführen:

Methode 1: Zeilen filtern, die keine bestimmte Zeichenfolge enthalten

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

Methode 2: Zeilen filtern, die eine von mehreren bestimmten Zeichenfolgen nicht enthalten

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

Die folgenden Beispiele zeigen, wie jede Methode in der Praxis mit dem folgenden Pandas DataFrame verwendet wird:

 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

Beispiel 1: Zeilen filtern, die keine bestimmte Zeichenfolge enthalten

Der folgende Code zeigt, wie der Pandas-DataFrame nach Zeilen gefiltert wird, deren Teamspalte nicht „ets“ im Namen enthält:

 #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

Beachten Sie, dass der resultierende DataFrame keine Zeilen enthält, deren Wert in der Teamspalte „ets“ im Namen enthält.

Insbesondere wurden die folgenden Teams vom DataFrame ausgeschlossen:

  • Netze
  • Raketen
  • Nuggets

Beachten Sie, dass jeder dieser Teamnamen „ets“ im Namen hatte.

Beispiel 2: Filtern Sie Zeilen, die eine von mehreren bestimmten Zeichenfolgen nicht enthalten

Der folgende Code zeigt, wie der Pandas-DataFrame nach Zeilen gefiltert wird, deren Teamspalte nicht „ets“ im Namen enthält:

 #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

Beachten Sie, dass der resultierende DataFrame keine Zeilen enthält, deren Wert in der Teamspalte „ets“ oder „urs“ im Namen enthält.

Hinweis : Die | Der Operator bedeutet „ODER“ in Pandas.

Zusätzliche Ressourcen

In den folgenden Tutorials wird erläutert, wie andere gängige Filtervorgänge in Pandas durchgeführt werden:

So filtern Sie einen Pandas DataFrame nach Spaltenwerten
So filtern Sie Pandas DataFrame-Zeilen nach Datum
So filtern Sie einen Pandas DataFrame nach mehreren Bedingungen

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert