Bagaimanakah Saya Boleh Mencari Perbezaan Antara Dua Bingkai Data Panda dengan Cekap?

Barbara Streisand
Lepaskan: 2024-11-25 20:21:12
asal
566 orang telah melayarinya

How Can I Efficiently Find the Differences Between Two Pandas DataFrames?

Mencari Perbezaan Antara Dua Bingkai Data

Apabila bekerja dengan bingkai data panda, adalah perkara biasa untuk mempunyai situasi di mana anda perlu membandingkan dua bingkai data dan ekstrak perbezaan antara mereka. Sebagai contoh, anda mungkin mempunyai bingkai data asas (df1) dan bingkai data subset (df2) dan ingin mencipta bingkai data baharu (df3) yang mengandungi semua baris dan lajur dalam df1 yang tidak terdapat dalam df2.

Menggunakan drop_duplicates

Kaedah paling langsung untuk mencapai ini adalah dengan menggunakan fungsi drop_duplicates. Dengan menggabungkan df1 dan df2, dan kemudian menggunakan drop_duplicates pada bingkai data yang digabungkan, anda boleh menghapuskan baris pendua dan mendapatkan bingkai data yang mengandungi hanya baris unik.

pd.concat([df1, df2]).drop_duplicates(keep=False)
Salin selepas log masuk

Mengendalikan Pendua

Walau bagaimanapun, jika sama ada df1 atau df2 sendiri mengandungi pendua baris, pendekatan drop_duplicates boleh menghasilkan output yang salah. Untuk menangani perkara ini, anda boleh menggunakan kaedah alternatif yang mengekalkan pendua asal:

Kaedah 1: Menggunakan isin dengan tuple

Kaedah ini melibatkan penukaran setiap baris bingkai data menjadi tupel dan menyemak sama ada tupel hadir dalam kedua-dua bingkai data. Baris yang tidak sepadan dengan mana-mana tuple dalam bingkai data lain akan disertakan dalam bingkai data perbezaan.

df1[~df1.apply(tuple, 1).isin(df2.apply(tuple, 1))]
Salin selepas log masuk

Kaedah 2: Gabung dengan penunjuk

Satu lagi pendekatan melibatkan penggabungan df1 dan df2 menggunakan lajur penunjuk. Dengan menyatakan how='left' dalam cantuman, baris daripada df1 yang tidak mempunyai baris yang sepadan dalam df2 akan diberikan nilai lajur _merge left_only. Anda kemudiannya boleh menapis baris berdasarkan lajur penunjuk ini untuk mendapatkan bingkai data perbezaan.

df1.merge(df2, indicator=True, how='left').loc[lambda x: x['_merge'] != 'both']
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mencari Perbezaan Antara Dua Bingkai Data Panda dengan Cekap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan