Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk Membandingkan Dua Bingkai Data dan Ekstrak Perbezaan Berdasarkan Lajur Tertentu?
Membandingkan Dua Bingkai Data dan Mengenalpasti Perbezaan
Dalam senario anda, anda mempunyai dua bingkai data, df1 dan df2, dengan struktur dan indeks baris yang sama. Matlamat anda ialah untuk menentukan baris mana yang wujud dalam df2 tetapi bukan dalam df1 dengan membandingkan nilai tarikh dan buahnya.
Perbandingan Langsung
Pendekatan penggunaan df1 != df2 tidak sesuai kerana ia memerlukan bingkai data berlabel yang sama. Mengalih keluar indeks Tarikh juga gagal menyelesaikan isu.
Penggabungan dan Pengumpulan
Untuk mencari perbezaan, anda boleh menggabungkan bingkai data menjadi satu bingkai data df:
<code class="python">import pandas as pd df = pd.concat([df1, df2]) df = df.reset_index(drop=True)</code>
Kumpulkan df mengikut semua lajurnya untuk mengenal pasti rekod unik:
<code class="python">df_gpby = df.groupby(list(df.columns))</code>
Menapis Rekod Unik
Seterusnya, dapatkan semula indeks rekod unik , iaitu yang mempunyai saiz kumpulan 1:
<code class="python">idx = [x[0] for x in df_gpby.groups.values() if len(x) == 1]</code>
Akhir sekali, anda boleh menggunakan indeks ini untuk menapis rangka data yang digabungkan untuk mendapatkan hanya baris yang eksklusif untuk df2:
<code class="python">df.reindex(idx)</code>
Ini akan mengembalikan bingkai data yang mengandungi perbezaan yang diingini:
Date Fruit Num Color 9 2013-11-25 Orange 8.6 Orange 8 2013-11-25 Apple 22.1 Red
Atas ialah kandungan terperinci Bagaimana untuk Membandingkan Dua Bingkai Data dan Ekstrak Perbezaan Berdasarkan Lajur Tertentu?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!