Como filtrar o pandas dataframe usando colunas booleanas
Você pode usar os seguintes métodos para filtrar linhas em um DataFrame do pandas com base em valores de colunas booleanas:
Método 1: Filtre o DataFrame com base em uma coluna booleana
#filter for rows where value in 'my_column' is True df. loc [df. my_column ]
Método 2: Filtrar o DataFrame com base em múltiplas colunas booleanas
#filter for rows where value in 'column1' or 'column2' is True df. loc [df. column1 | df. column2 ]
Os exemplos a seguir mostram como usar cada método na prática com o seguinte DataFrame do pandas:
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
Exemplo 1: Filtre o DataFrame com base em uma coluna booleana
Podemos usar a seguinte sintaxe para filtrar o DataFrame do pandas para conter apenas linhas onde o valor na coluna all_star é 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
Observe que o DataFrame foi filtrado para conter apenas linhas cujo valor na coluna all_star seja True.
Se você quiser filtrar linhas onde all_star é False, simplesmente digite um til ( ~ ) na frente do nome da coluna:
#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
O DataFrame agora foi filtrado para conter apenas linhas cujo valor na coluna all_star é False.
Exemplo 2: Filtrar o DataFrame com base em múltiplas colunas booleanas
Podemos usar a seguinte sintaxe para filtrar o DataFrame do pandas para conter apenas linhas onde o valor da coluna all_star ou da coluna inicial é 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
Observe que o DataFrame foi filtrado para conter apenas linhas cujo valor na coluna all_star ou inicial é True.
Se quiser filtrar linhas cujo valor nas colunas all_star e starter é True, você pode usar o operador & em vez de | operador:
#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
Agora o DataFrame foi filtrado para conter apenas linhas onde o valor nas colunas all_star e starter é True.
Relacionado: A diferença entre loc e iloc no Pandas
Recursos adicionais
Os tutoriais a seguir explicam como realizar outras tarefas comuns em pandas:
Pandas: selecione linhas do DataFrame usando uma série booleana
Pandas: como criar uma coluna booleana com base na condição
Pandas: Como converter valores booleanos em valores inteiros