Panda: come rimuovere i duplicati mantenendo la riga con il valore massimo


È possibile utilizzare i seguenti metodi per rimuovere i duplicati in un DataFrame panda ma mantenere la riga che contiene il valore massimo in una particolare colonna:

Metodo 1: rimuovi i duplicati in una colonna e mantieni la riga con max

 df. sort_values (' var2 ', ascending= False ). drop_duplicates (' var1 '). sort_index ()

Metodo 2: rimuovi i duplicati in più colonne e mantieni la riga con max

 df. sort_values (' var3 ', ascending= False ). drop_duplicates ([' var1 ', ' var2 ']). sort_index ()

Gli esempi seguenti mostrano come utilizzare ciascun metodo nella pratica.

Esempio 1: rimuovi i duplicati in una colonna e mantieni la riga con Max

Supponiamo di avere il seguente DataFrame panda che contiene informazioni sui punti segnati dai giocatori di basket di diverse squadre:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'B', 'B', 'B', 'C', 'C', 'C'],
                   ' points ': [20, 24, 28, 30, 14, 19, 29, 40, 22]})

#view DataFrame
print (df)

  team points
0 to 20
1 to 24
2 to 28
3 B 30
4 B 14
5 B 19
6 C 29
7 C 40
8 C 22

Possiamo utilizzare la seguente sintassi per rimuovere le righe con nomi di squadre duplicati ma mantenere le righe con valori massimi per i punti :

 #drop duplicate teams but keeps row with max points
df_new = df. sort_values (' points ', ascending= False ). drop_duplicates (' team '). sort_index ()

#view DataFrame
print (df_new)

  team points
2 to 28
3 B 30
7 C 40

Ogni riga con un nome di squadra duplicato è stata rimossa, ma per ciascuna squadra sono state mantenute le righe con il valore in punti massimo.

Esempio 2: rimuovi i duplicati in più colonne e mantieni la riga con Max

Supponiamo di avere i seguenti panda DataFrame:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'B', 'B', 'B', 'C', 'C', 'C'],
                   ' position ': ['G', 'G', 'F', 'G', 'F', 'F', 'G', 'G', 'F'],
                   ' points ': [20, 24, 28, 30, 14, 19, 29, 40, 22]})

#view DataFrame
print (df)

  team position points
0 AG 20
1 GA 24
2AF 28
3 BG 30
4 BF 14
5 BF 19
6 GC 29
7 GC 40
8 CF 22

Possiamo utilizzare la seguente sintassi per rimuovere le righe con nomi di squadre e posizioni duplicati, ma mantenere le righe con valori massimi per i punti :

 #drop rows with duplicate team and positions but keeps row with max points
df_new = df. sort_values (' points ', ascending= False ). drop_duplicates ([' team ',' position ']). sort_index ()

#view DataFrame
print (df_new)

  team position points
1 GA 24
2AF 28
3 BG 30
5 BF 19
7 GC 40
8 CF 22

Ogni riga con un nome di squadra e posizione duplicato è stata rimossa, ma le righe con il valore in punti massimo sono state mantenute per ciascuna combinazione di squadra e posizione.

Risorse addizionali

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

Come rimuovere le righe duplicate in Pandas
Come rimuovere le colonne duplicate in Pandas
Come contare i duplicati nei panda

Aggiungi un commento

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