Panda's: hoe u duplicaten verwijdert terwijl u de rij met de maximale waarde behoudt
U kunt de volgende methoden gebruiken om duplicaten in een Panda DataFrame te verwijderen, maar de rij behouden die de maximale waarde in een bepaalde kolom bevat:
Methode 1: Duplicaten in een kolom verwijderen en rij behouden met Max
df. sort_values (' var2 ', ascending= False ). drop_duplicates (' var1 '). sort_index ()
Methode 2: Duplicaten in meerdere kolommen verwijderen en rij behouden met Max
df. sort_values (' var3 ', ascending= False ). drop_duplicates ([' var1 ', ' var2 ']). sort_index ()
De volgende voorbeelden laten zien hoe u elke methode in de praktijk kunt gebruiken.
Voorbeeld 1: Verwijder duplicaten in een kolom en behoud de rij met Max
Stel dat we het volgende panda’s DataFrame hebben dat informatie bevat over de punten die zijn gescoord door basketbalspelers van verschillende teams:
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
We kunnen de volgende syntaxis gebruiken om rijen met dubbele teamnamen te verwijderen, maar rijen met maximale waarden voor punten te behouden:
#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
Elke rij met een dubbele teamnaam werd verwijderd, maar de rijen met de maximale puntenwaarde bleven voor elk team behouden.
Voorbeeld 2: Verwijder duplicaten in meerdere kolommen en behoud rij met Max
Stel dat we de volgende panda’s DataFrame hebben:
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
We kunnen de volgende syntaxis gebruiken om rijen met dubbele team- en positienamen te verwijderen, maar rijen met maximale waarden voor punten te behouden:
#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
Elke rij met een dubbele team- en positienaam werd verwijderd, maar de rijen met de maximale puntenwaarde bleven behouden voor elke team- en positiecombinatie.
Aanvullende bronnen
In de volgende tutorials wordt uitgelegd hoe u andere veelvoorkomende bewerkingen in panda’s kunt uitvoeren:
Hoe dubbele rijen in Panda’s te verwijderen
Hoe dubbele kolommen in Pandas te verwijderen
Hoe duplicaten in panda’s te tellen