Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk Menggugurkan Pendua Berturut-turut dengan Cekap dalam Panda?

Bagaimana untuk Menggugurkan Pendua Berturut-turut dengan Cekap dalam Panda?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-13 17:29:02638semak imbas

How to Efficiently Drop Consecutive Duplicates in Pandas?

Pengguguran Pendua Berturut-turut yang Cekap dalam Panda

Apabila bekerja dengan DataFrames panda, selalunya perlu mengalih keluar nilai pendua. Kaedah drop_duplicates() terbina dalam, bagaimanapun, mengalih keluar semua contoh nilai pendua, termasuk pendua berturut-turut. Untuk kes di mana hanya pendua berturut-turut perlu digugurkan, terdapat kaedah yang lebih cekap tersedia.

Satu pendekatan melibatkan penggunaan fungsi shift(). Dengan membandingkan DataFrame dengan versi dianjaknya (a.shift(-1)), topeng boolean boleh dibuat yang mengenal pasti tempat pendua berturut-turut berlaku. Topeng ini kemudiannya boleh digunakan untuk memilih nilai unik sahaja, seperti yang dilihat dalam contoh berikut:

a.loc[a.shift(-1) != a]

Kaedah lain menggunakan fungsi diff(). Ia mengira perbezaan antara baris dan boleh digunakan untuk mengenal pasti pendua berturut-turut. Walau bagaimanapun, ia lebih perlahan daripada kaedah shift() untuk set data yang besar.

Menggunakan:

a.loc[a.diff() != 0]

Jawapan asal dicadangkan menggunakan shift() dengan tempoh -1, tetapi penggunaan yang betul ialah anjakan(1) (atau ringkasnya anjakan()) kerana tempoh anjakan lalai ialah 1. Pengubahsuaian ini memastikan bahawa hanya nilai berturut-turut pertama dikembalikan:

a.loc[a.shift(1) != a]

Kedua-dua anjakan() dan beza() kaedah menyediakan cara yang cekap untuk menggugurkan pendua berturut-turut dalam Panda dan harus dipertimbangkan berdasarkan konteks khusus dan keperluan prestasi.

Atas ialah kandungan terperinci Bagaimana untuk Menggugurkan Pendua Berturut-turut dengan Cekap dalam Panda?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn