Come eliminare le righe in pandas dataframe in base alle condizioni


Possiamo utilizzare la seguente sintassi per eliminare righe in un DataFrame panda in base alla condizione:

Metodo 1: elimina le righe in base a una singola condizione

 df = df[df. col1 > 8]

Metodo 2: Elimina righe in base a più condizioni

 df = df[(df. col1 > 8) & (df. col2 != ' A ')]

Nota : possiamo anche utilizzare la funzione drop() per eliminare righe da un DataFrame, ma questa funzione ha dimostrato di essere molto più lenta rispetto alla semplice assegnazione del DataFrame a una versione filtrata di se stesso.

I seguenti esempi mostrano come utilizzare questa sintassi in pratica con i seguenti DataFrame panda:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'],
                   ' pos ': ['G', 'G', 'F', 'F', 'G', 'G', 'F', 'F'],
                   ' assists ': [5, 7, 7, 9, 12, 9, 9, 4],
                   ' rebounds ': [11, 8, 10, 6, 6, 5, 9, 12]})

#view DataFrame
df

	team pos assists rebounds
0 A G 5 11
1 A G 7 8
2 A F 7 10
3 A F 9 6
4 B G 12 6
5 B G 9 5
6 B F 9 9
7 B F 4 12

Metodo 1: elimina le righe in base a una singola condizione

Il codice seguente mostra come eliminare le righe nel DataFrame in base a una condizione:

 #drop rows where value in 'assists' column is less than or equal to 8
df = df[df. assists > 8] 

#view updated DataFrame
df

	team pos assists rebounds
3 A F 9 6
4 B G 12 6
5 B G 9 5
6 B F 9 9

Qualsiasi riga con un valore inferiore o uguale a 8 nella colonna “assistenza” è stata rimossa dal DataFrame.

Metodo 2: Elimina righe in base a più condizioni

Il codice seguente mostra come eliminare righe nel DataFrame in base a diverse condizioni:

 #only keep rows where 'assists' is greater than 8 and rebounds is greater than 5
df = df[(df. assists > 8) & (df. rebounds > 5)]

#view updated DataFrame
df

	team pos assists rebounds
3 A F 9 6
4 B G 12 6
5 B G 9 5
6 B F 9 9

Le uniche righe che abbiamo mantenuto nel DataFrame erano quelle in cui il valore degli assist era maggiore di 8 e il valore dei rimbalzi era maggiore di 5.

Nota che possiamo anche usare | operatore per applicare un filtro “o”:

 #only keep rows where 'assists' is greater than 8 or rebounds is greater than 10
df = df[(df. assists > 8) | (df. rebounds > 10)]

#view updated DataFrame
df

	team pos assists rebounds
0 A G 5 11
3 A F 9 6
4 B G 12 6
5 B G 9 5
6 B F 9 9
7 B F 4 12

Le uniche righe che abbiamo mantenuto nel DataFrame erano quelle in cui il valore di assistenza era maggiore di 8 o il valore di rimbalzo era maggiore di 10.

Tutte le righe che non soddisfacevano una di queste condizioni venivano eliminate.

Risorse addizionali

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

Come eliminare righe contenenti un valore specifico in Pandas
Come eliminare righe contenenti una stringa specifica in Pandas
Come eliminare le righe per indice in Pandas

Aggiungi un commento

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