Pandas: cara menghapus duplikat sekaligus menjaga baris dengan nilai maksimal
Anda dapat menggunakan metode berikut untuk menghapus duplikat di pandas DataFrame tetapi pertahankan baris yang berisi nilai maksimum di kolom tertentu:
Metode 1: Hapus Duplikat di Kolom dan Pertahankan Baris dengan Maks
df. sort_values (' var2 ', ascending= False ). drop_duplicates (' var1 '). sort_index ()
Metode 2: Hapus Duplikat di Beberapa Kolom dan Pertahankan Baris dengan Maks
df. sort_values (' var3 ', ascending= False ). drop_duplicates ([' var1 ', ' var2 ']). sort_index ()
Contoh berikut menunjukkan cara menggunakan masing-masing metode dalam praktik.
Contoh 1: Hapus duplikat dalam kolom dan pertahankan baris dengan Max
Misalkan kita memiliki pandas DataFrame berikut yang berisi informasi tentang poin yang dicetak oleh pemain bola basket dari tim berbeda:
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
Kita dapat menggunakan sintaks berikut untuk menghapus baris dengan nama tim duplikat tetapi tetap mempertahankan baris dengan nilai poin maksimum :
#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
Setiap baris dengan nama tim duplikat telah dihapus, namun baris dengan nilai poin maksimum dipertahankan untuk setiap tim .
Contoh 2: Hapus duplikat di beberapa kolom dan pertahankan baris dengan Maks
Misalkan kita memiliki panda DataFrame berikut:
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
Kita dapat menggunakan sintaks berikut untuk menghapus baris dengan nama tim dan posisi duplikat, tetapi pertahankan baris dengan nilai poin maksimum :
#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
Setiap baris dengan nama tim dan posisi duplikat telah dihapus, tetapi baris dengan nilai poin maksimum dipertahankan untuk setiap kombinasi tim dan posisi.
Sumber daya tambahan
Tutorial berikut menjelaskan cara melakukan operasi umum lainnya di panda:
Cara menghapus baris duplikat di Pandas
Cara menghapus kolom duplikat di Pandas
Cara menghitung duplikat di panda