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

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *