So filtern sie pandas dataframe mithilfe boolescher spalten


Sie können die folgenden Methoden verwenden, um Zeilen in einem Pandas-DataFrame basierend auf booleschen Spaltenwerten zu filtern:

Methode 1: Filtern Sie den DataFrame basierend auf einer booleschen Spalte

 #filter for rows where value in 'my_column' is True
df. loc [df. my_column ]

Methode 2: Filtern Sie den DataFrame basierend auf mehreren booleschen Spalten

 #filter for rows where value in 'column1' or 'column2' is True
df. loc [df. column1 | df. column2 ]

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 ': ['A', 'B', 'C', 'D', 'E', 'F', 'G'],
                   ' points ': [18,20, 25, 40, 34, 32, 19],
                   ' all_star ': [True, False, True, True, True, False, False],
                   ' starter ': [False, True, True, True, False, False, False]})

#view DataFrame
print (df)

  team points all_star starter
0 A 18 True False
1 B 20 False True
2 C 25 True True
3 D 40 True True
4 E 34 True False
5 F 32 False False
6 G 19 False False

Beispiel 1: Filtern Sie den DataFrame basierend auf einer booleschen Spalte

Wir können die folgende Syntax verwenden, um den Pandas-DataFrame so zu filtern, dass er nur Zeilen enthält, in denen der Wert in der Spalte „all_star “ „True“ ist:

 #filter for rows where 'all_star' is True
df. loc [df. all_star ]

	team points all_star starter
0 A 18 True False
2 C 25 True True
3 D 40 True True
4 E 34 True False

Beachten Sie, dass der DataFrame so gefiltert wurde, dass er nur Zeilen enthält, deren Wert in der Spalte all_star True ist.

Wenn Sie stattdessen Zeilen filtern möchten, in denen all_star False ist, geben Sie einfach eine Tilde ( ~ ) vor dem Spaltennamen ein:

 #filter for rows where 'all_star' is False
df. loc [ ~ df. all_star ]

        team points all_star starter
1 B 20 False True
5 F 32 False False
6 G 19 False False

Der DataFrame wurde nun so gefiltert, dass er nur Zeilen enthält, deren Wert in der Spalte all_star False ist.

Beispiel 2: Filtern Sie den DataFrame basierend auf mehreren booleschen Spalten

Wir können die folgende Syntax verwenden, um den Pandas-DataFrame so zu filtern, dass er nur Zeilen enthält, in denen der Wert der Spalte „all_staroder der Startspalte „True“ ist:

 #filter for rows where 'all_star' or 'starter' is True
df. loc [df. all_star | df. starter ]

        team points all_star starter
0 A 18 True False
1 B 20 False True
2 C 25 True True
3 D 40 True True
4 E 34 True False

Beachten Sie, dass der DataFrame so gefiltert wurde, dass er nur Zeilen enthält, deren Wert in der Spalte „all_star“ oder „starter“ „True“ ist.

Wenn Sie Zeilen filtern möchten, deren Wert in den Spalten all_star und starter True ist, können Sie den Operator & anstelle von | verwenden Operator:

 #filter for rows where 'all_star' and 'starter' is True
df. loc [df. all_star & df. starter ]

	team points all_star starter
2 C 25 True True
3 D 40 True True

Jetzt wurde der DataFrame so gefiltert, dass er nur Zeilen enthält, in denen der Wert in den Spalten „all_star“ und „starter“ „True“ ist.

Verwandt: Der Unterschied zwischen loc und iloc bei Pandas

Zusätzliche Ressourcen

In den folgenden Tutorials wird erläutert, wie andere häufige Aufgaben in Pandas ausgeführt werden:

Pandas: Wählen Sie Zeilen aus DataFrame mithilfe einer booleschen Reihe aus
Pandas: So erstellen Sie eine boolesche Spalte basierend auf der Bedingung
Pandas: So konvertieren Sie boolesche Werte in ganzzahlige Werte

Einen Kommentar hinzufügen

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