Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah Saya Boleh Mencari Perbezaan Antara Dua Bingkai Data Panda dengan Cekap?

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

Barbara Streisand
Barbara Streisandasal
2024-11-25 20:21:12582semak imbas

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)

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))]

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']

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!

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