Pandas: como filtrar itens “não contém”?


Você pode usar os seguintes métodos para executar um filtro “Não contém” em um DataFrame do pandas:

Método 1: Filtrar linhas que não contêm uma string específica

 filtered_df = df[df[' my_column ']. str . contains (' some_string ') == False ]

Método 2: Filtrar linhas que não contêm uma das várias strings específicas

 filtered_df = df[df[' my_column ']. str . contains (' string1|string2|string3 ') == False ]

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 ': ['Nets', 'Rockets', 'Mavs', 'Spurs', 'Kings', 'Nuggets'],
                   ' points ': [18, 22, 19, 14, 14, 11],
                   ' assists ': [5, 7, 7, 9, 12, 9],
                   ' rebounds ': [11, 8, 10, 6, 6, 5]})

#view DataFrame
print (df)

      team points assists rebounds
0 Nets 18 5 11
1 Rockets 22 7 8
2 Mavs 19 7 10
3 Spurs 14 9 6
4 Kings 14 12 6
5 Nuggets 11 9 5

Exemplo 1: Filtrar linhas que não contêm uma string específica

O código a seguir mostra como filtrar o DataFrame do pandas para linhas cuja coluna de equipe não contém “ets” no nome:

 #filter for rows that do not contain 'ets' in the 'team' column
filtered_df = df[df[' team ']. str . contains (' ets ') == False ]

#view filtered DataFrame
print (filtered_df)

    team points assists rebounds
2 Mavs 19 7 10
3 Spurs 14 9 6
4 Kings 14 12 6

Observe que o DataFrame resultante não contém nenhuma linha cujo valor na coluna da equipe contenha “ets” no nome.

Em particular, as seguintes equipas foram excluídas do DataFrame:

  • Redes
  • Foguetes
  • Pepitas

Observe que cada um desses nomes de times tinha “ets” no nome.

Exemplo 2: Filtrar linhas que não contêm uma das diversas strings específicas

O código a seguir mostra como filtrar o DataFrame do pandas para linhas cuja coluna de equipe não contém “ets” no nome:

 #filter for rows that do not contain 'ets' or 'urs' in the 'team' column
filtered_df = df[df[' team ']. str . contains (' ets|urs ') == False ]

#view filtered DataFrame
print (filtered_df)

    team points assists rebounds
2 Mavs 19 7 10
4 Kings 14 12 6

Observe que o DataFrame resultante não contém nenhuma linha cujo valor na coluna da equipe contenha “ets” ou “urs” no nome.

Nota : O | O operador significa “OR” em pandas.

Recursos adicionais

Os tutoriais a seguir explicam como realizar outras operações comuns de filtragem em pandas:

Como filtrar um DataFrame do Pandas por valores de coluna
Como filtrar linhas do Pandas DataFrame por data
Como filtrar um DataFrame do Pandas em múltiplas condições

Add a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *