Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk Membandingkan Dua Bingkai Data dan Ekstrak Perbezaan Berdasarkan Lajur Tertentu?

Bagaimana untuk Membandingkan Dua Bingkai Data dan Ekstrak Perbezaan Berdasarkan Lajur Tertentu?

Patricia Arquette
Patricia Arquetteasal
2024-10-19 21:14:02461semak imbas

How to Compare Two Dataframes and Extract Differences Based on Specific Columns?

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!

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