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_star “ oder 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