Pandas: so entfernen sie duplikate und behalten dabei die zeile mit dem maximalwert bei


Mit den folgenden Methoden können Sie Duplikate in einem Pandas-DataFrame entfernen, aber die Zeile behalten, die den Maximalwert in einer bestimmten Spalte enthält:

Methode 1: Duplikate in einer Spalte entfernen und Zeile mit max

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

Methode 2: Duplikate in mehreren Spalten entfernen und Zeile mit max. beibehalten

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

Die folgenden Beispiele zeigen, wie die einzelnen Methoden in der Praxis angewendet werden.

Beispiel 1: Duplikate in einer Spalte entfernen und die Zeile mit Max beibehalten

Angenommen, wir haben den folgenden Pandas-DataFrame, der Informationen über die von Basketballspielern verschiedener Teams erzielten Punkte enthält:

 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

Wir können die folgende Syntax verwenden, um Zeilen mit doppelten Teamnamen zu entfernen, aber Zeilen mit Höchstwerten für Punkte beizubehalten:

 #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

Jede Zeile mit einem doppelten Teamnamen wurde entfernt, aber die Zeilen mit dem maximalen Punktwert wurden für jedes Team beibehalten.

Beispiel 2: Duplikate in mehreren Spalten entfernen und Zeile mit Max beibehalten

Angenommen, wir haben den folgenden Pandas-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

Wir können die folgende Syntax verwenden, um Zeilen mit doppelten Team- und Positionsnamen zu entfernen, aber Zeilen mit Höchstwerten für Punkte beizubehalten:

 #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

Jede Zeile mit einem doppelten Team- und Positionsnamen wurde entfernt, aber die Zeilen mit dem maximalen Punktwert wurden für jede Team- und Positionskombination beibehalten.

Zusätzliche Ressourcen

In den folgenden Tutorials wird erläutert, wie andere gängige Vorgänge in Pandas ausgeführt werden:

So entfernen Sie doppelte Zeilen in Pandas
So entfernen Sie doppelte Spalten in Pandas
So zählen Sie Duplikate in Pandas

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert