Pandy: jak usunąć duplikaty, zachowując wiersz o maksymalnej wartości


Możesz użyć następujących metod, aby usunąć duplikaty w ramce danych pand, ale zachowaj wiersz zawierający maksymalną wartość w określonej kolumnie:

Metoda 1: Usuń duplikaty z kolumny i zachowaj wiersz z maks

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

Metoda 2: Usuń duplikaty w wielu kolumnach i zachowaj wiersz z maks

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

Poniższe przykłady pokazują, jak zastosować każdą metodę w praktyce.

Przykład 1: Usuń duplikaty z kolumny i zachowaj wiersz z wartością Max

Załóżmy, że mamy następującą ramkę DataFrame pand, która zawiera informacje o punktach zdobytych przez koszykarzy z różnych drużyn:

 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

Możemy użyć następującej składni, aby usunąć wiersze ze zduplikowanymi nazwami drużyn , ale zachować wiersze z maksymalnymi wartościami punktów :

 #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

Usunięto każdy wiersz ze zduplikowaną nazwą zespołu , ale dla każdego zespołu zachowano wiersze z maksymalną wartością punktową .

Przykład 2: Usuń duplikaty w wielu kolumnach i zachowaj wiersz z wartością Max

Załóżmy, że mamy następującą ramkę DataFrame pand:

 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

Możemy użyć poniższej składni, aby usunąć wiersze ze zduplikowanymi nazwami drużyn i pozycji , ale zachować wiersze z maksymalnymi wartościami punktów :

 #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

Każdy wiersz ze zduplikowaną nazwą zespołu i pozycji został usunięty, ale wiersze z maksymalną wartością punktową zostały zachowane dla każdej kombinacji zespołu i pozycji.

Dodatkowe zasoby

Poniższe samouczki wyjaśniają, jak wykonywać inne typowe operacje na pandach:

Jak usunąć zduplikowane wiersze w Pandach
Jak usunąć zduplikowane kolumny w Pandach
Jak liczyć duplikaty w pandach

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *