Hoe pandas dataframe te filteren met behulp van booleaanse kolommen


U kunt de volgende methoden gebruiken om rijen in een Panda DataFrame te filteren op basis van Booleaanse kolomwaarden:

Methode 1: Filter het DataFrame op basis van een Booleaanse kolom

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

Methode 2: Filter het DataFrame op basis van meerdere Booleaanse kolommen

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

De volgende voorbeelden laten zien hoe u elke methode in de praktijk kunt gebruiken met de volgende panda’s DataFrame:

 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

Voorbeeld 1: Filter het DataFrame op basis van een Booleaanse kolom

We kunnen de volgende syntaxis gebruiken om het panda’s DataFrame te filteren zodat het alleen rijen bevat waarvan de waarde in de all_star- kolom True is:

 #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

Houd er rekening mee dat het DataFrame is gefilterd om alleen rijen te bevatten waarvan de waarde in de all_star- kolom True is.

Als u in plaats daarvan rijen wilt filteren waarin all_star False is, typt u eenvoudigweg een tilde ( ~ ) vóór de kolomnaam:

 #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

Het DataFrame is nu gefilterd zodat het alleen rijen bevat waarvan de waarde in de all_star- kolom False is.

Voorbeeld 2: Filter het DataFrame op basis van meerdere Booleaanse kolommen

We kunnen de volgende syntaxis gebruiken om het panda’s DataFrame te filteren zodat het alleen rijen bevat waarin de waarde van de all_star- kolom of de startkolom True is:

 #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

Houd er rekening mee dat het DataFrame is gefilterd om alleen rijen te bevatten waarvan de waarde in de all_star- of starter- kolom True is.

Als u rijen wilt filteren waarvan de waarde in de kolommen all_star en starter True is, kunt u de operator & gebruiken in plaats van | exploitant:

 #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

Nu is het DataFrame gefilterd zodat het alleen rijen bevat waarvan de waarde in de kolommen all_star en starter True is.

Gerelateerd: Het verschil tussen loc en iloc bij Pandas

Aanvullende bronnen

In de volgende tutorials wordt uitgelegd hoe u andere veelvoorkomende taken in panda’s kunt uitvoeren:

Panda’s: selecteer rijen uit DataFrame met behulp van een Booleaanse reeks
Panda’s: hoe u een Booleaanse kolom maakt op basis van een voorwaarde
Panda’s: Booleaanse waarden converteren naar gehele waarden

Einen Kommentar hinzufügen

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