Jak filtrować ramkę danych pandas przy użyciu kolumn logicznych
Do filtrowania wierszy w ramce DataFrame pand można użyć następujących metod na podstawie wartości kolumn logicznych:
Metoda 1: Filtruj ramkę danych na podstawie kolumny logicznej
#filter for rows where value in 'my_column' is True df. loc [df. my_column ]
Metoda 2: Filtruj ramkę danych na podstawie wielu kolumn logicznych
#filter for rows where value in 'column1' or 'column2' is True df. loc [df. column1 | df. column2 ]
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 ': ['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
Przykład 1: Filtruj ramkę danych na podstawie kolumny logicznej
Możemy użyć następującej składni, aby przefiltrować ramkę danych pand tak, aby zawierała tylko wiersze, w których wartość w kolumnie all_star ma wartość True:
#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
Należy pamiętać, że ramka DataFrame została przefiltrowana tak, aby zawierała tylko wiersze, których wartość w kolumnie all_star ma wartość True.
Jeśli zamiast tego chcesz filtrować wiersze, w których all_star ma wartość False, po prostu wpisz tyldę ( ~ ) przed nazwą kolumny:
#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
Ramka danych została teraz przefiltrowana tak, aby zawierała tylko wiersze, których wartość w kolumnie all_star to False.
Przykład 2: Filtruj ramkę danych na podstawie wielu kolumn logicznych
Możemy użyć następującej składni, aby przefiltrować ramkę danych pand tak, aby zawierała tylko wiersze, w których wartość kolumny all_star lub kolumny początkowej ma wartość True:
#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
Należy pamiętać, że ramka DataFrame została przefiltrowana tak, aby zawierała tylko wiersze, których wartość w kolumnie all_star lub startowej ma wartość True.
Jeśli chcesz filtrować wiersze , których wartość w kolumnach all_star i starter to True, możesz użyć operatora & zamiast | 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
Teraz ramka DataFrame została przefiltrowana tak, aby zawierała tylko wiersze, w których wartość w kolumnach all_star i starter ma wartość True.
Powiązane: Różnica między loc i iloc w Pandas
Dodatkowe zasoby
Poniższe samouczki wyjaśniają, jak wykonywać inne typowe zadania w pandach:
Pandy: wybierz wiersze z DataFrame, używając serii logicznej
Pandy: jak utworzyć kolumnę logiczną na podstawie warunku
Pandy: Jak konwertować wartości logiczne na wartości całkowite