Saya memiliki daftar item yang kemungkinan memiliki beberapa masalah ekspor. Saya ingin mendapatkan daftar item duplikat sehingga saya dapat membandingkannya secara manual. Ketika saya mencoba menggunakan metode duplikat panda , itu hanya mengembalikan duplikat pertama. Apakah ada cara untuk mendapatkan semua duplikat dan bukan hanya yang pertama?
Subbagian kecil dari kumpulan data saya terlihat seperti ini:
ID,ENROLLMENT_DATE,TRAINER_MANAGING,TRAINER_OPERATOR,FIRST_VISIT_DATE
1536D,12-Feb-12,"06DA1B3-Lebanon NH",,15-Feb-12
F15D,18-May-12,"06405B2-Lebanon NH",,25-Jul-12
8096,8-Aug-12,"0643D38-Hanover NH","0643D38-Hanover NH",25-Jun-12
A036,1-Apr-12,"06CB8CF-Hanover NH","06CB8CF-Hanover NH",9-Aug-12
8944,19-Feb-12,"06D26AD-Hanover NH",,4-Feb-12
1004E,8-Jun-12,"06388B2-Lebanon NH",,24-Dec-11
11795,3-Jul-12,"0649597-White River VT","0649597-White River VT",30-Mar-12
30D7,11-Nov-12,"06D95A3-Hanover NH","06D95A3-Hanover NH",30-Nov-11
3AE2,21-Feb-12,"06405B2-Lebanon NH",,26-Oct-12
B0FE,17-Feb-12,"06D1B9D-Hartland VT",,16-Feb-12
127A1,11-Dec-11,"064456E-Hanover NH","064456E-Hanover NH",11-Nov-12
161FF,20-Feb-12,"0643D38-Hanover NH","0643D38-Hanover NH",3-Jul-12
A036,30-Nov-11,"063B208-Randolph VT","063B208-Randolph VT",
475B,25-Sep-12,"06D26AD-Hanover NH",,5-Nov-12
151A3,7-Mar-12,"06388B2-Lebanon NH",,16-Nov-12
CA62,3-Jan-12,,,
D31B,18-Dec-11,"06405B2-Lebanon NH",,9-Jan-12
20F5,8-Jul-12,"0669C50-Randolph VT",,3-Feb-12
8096,19-Dec-11,"0649597-White River VT","0649597-White River VT",9-Apr-12
14E48,1-Aug-12,"06D3206-Hanover NH",,
177F8,20-Aug-12,"063B208-Randolph VT","063B208-Randolph VT",5-May-12
553E,11-Oct-12,"06D95A3-Hanover NH","06D95A3-Hanover NH",8-Mar-12
12D5F,18-Jul-12,"0649597-White River VT","0649597-White River VT",2-Nov-12
C6DC,13-Apr-12,"06388B2-Lebanon NH",,
11795,27-Feb-12,"0643D38-Hanover NH","0643D38-Hanover NH",19-Jun-12
17B43,11-Aug-12,,,22-Oct-12
A036,11-Aug-12,"06D3206-Hanover NH",,19-Jun-12
Kode saya terlihat seperti ini saat ini:
df_bigdata_duplicates = df_bigdata[df_bigdata.duplicated(cols='ID')]
Ada beberapa item duplikat. Tapi, ketika saya menggunakan kode di atas, saya hanya mendapatkan item pertama. Dalam referensi API, saya melihat bagaimana saya bisa mendapatkan item terakhir, tetapi saya ingin memiliki semuanya sehingga saya dapat memeriksanya secara visual untuk melihat mengapa saya mendapatkan perbedaan tersebut. Jadi, dalam contoh ini saya ingin mendapatkan ketiga entri A036 dan 11795 entri dan entri duplikat lainnya, bukan yang pertama saja. Apapun bantuannya sangat dihargai.
sumber
ID
, bukan" baris identik dalam beberapa atau semua kolom ".Jawaban:
Metode # 1: Cetak semua baris di mana ID adalah salah satu ID yang digandakan:
tapi saya tidak bisa memikirkan cara yang bagus untuk mencegah pengulangan berulang
ids
kali. Saya lebih suka metode # 2:groupby
pada ID.sumber
g for _
dilakukan?g for (placeholder, g) in df.groupby('bla') if 'bla'
; garis bawah adalah simbol khas untuk placeholder argumen yang tak terhindarkan di mana kita tidak ingin menggunakannya untuk apa pun dalam ekspresi seperti lambda.sort
tidak digunakan lagi untuk DataFrames yang mendukung salah satusort_values
atausort_index
T&J Terkait SODengan Pandas versi 0.17, Anda dapat menyetel 'keep = False' di fungsi duplikat untuk mendapatkan semua item duplikat.
sumber
'all'
akan menjadi IMO yang lebih logis dan intuitif.itu akan mengembalikan semua baris duplikat kembali kepada Anda.
Menurut dokumentasi :
sumber
Karena saya tidak dapat berkomentar, maka posting sebagai jawaban terpisah
Untuk menemukan duplikat berdasarkan lebih dari satu kolom, sebutkan setiap nama kolom seperti di bawah ini, dan itu akan mengembalikan Anda semua kumpulan baris duplikat:
sumber
Ini berhasil untuk saya
sumber
== True
,.duplicated()
sudah mengembalikan array bool.Menggunakan logika bijak-elemen atau dan menyetel argumen take_last dari metode duplikat panda ke True dan False, Anda dapat memperoleh satu set dari kerangka data Anda yang menyertakan semua duplikat.
sumber
Ini mungkin bukan solusi untuk pertanyaan, tetapi untuk mengilustrasikan contoh:
Keluarannya:
sumber
sort("ID")
tampaknya tidak berfungsi sekarang, sepertinya tidak digunakan lagi sesuai dokumen pengurutan , jadi gunakansort_values("ID")
sebagai gantinya untuk mengurutkan setelah filter duplikat, seperti berikut:sumber
Untuk database saya yang digandakan (keep = False) tidak berfungsi sampai kolom diurutkan.
sumber
df[df.duplicated(['ID'])==True].sort_values('ID')
sumber