Panda: come filtrare gli elementi "non contiene"?


È possibile utilizzare i seguenti metodi per eseguire un filtro “Non contiene” in un DataFrame panda:

Metodo 1: filtra le righe che non contengono una stringa specifica

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

Metodo 2: filtra le righe che non contengono una delle numerose stringhe specifiche

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

I seguenti esempi mostrano come utilizzare ciascun metodo nella pratica con i seguenti DataFrame panda:

 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

Esempio 1: filtrare le righe che non contengono una stringa specifica

Il codice seguente mostra come filtrare il DataFrame panda per le righe la cui colonna del team non contiene “ets” nel 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

Tieni presente che il DataFrame risultante non contiene righe il cui valore nella colonna del team contiene “ets” nel nome.

In particolare, sono stati esclusi dal DataFrame i seguenti team:

  • Reti
  • Razzi
  • Pepite

Nota che ciascuno di questi nomi di squadra aveva “ets” nel nome.

Esempio 2: filtrare le righe che non contengono una delle numerose stringhe specifiche

Il codice seguente mostra come filtrare il DataFrame panda per le righe la cui colonna del team non contiene “ets” nel 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

Tieni presente che il DataFrame risultante non contiene righe il cui valore nella colonna del team contiene “ets” o “urs” nel nome.

Nota : il | L’operatore significa “OR” in panda.

Risorse addizionali

I seguenti tutorial spiegano come eseguire altre operazioni di filtro comuni nei panda:

Come filtrare un Pandas DataFrame in base ai valori delle colonne
Come filtrare le righe Pandas DataFrame per data
Come filtrare un Pandas DataFrame su più condizioni

Aggiungi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *