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

Patricia Arquette
Lepaskan: 2024-10-19 21:14:02
asal
344 orang telah melayarinya

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>
Salin selepas log masuk

Kumpulkan df mengikut semua lajurnya untuk mengenal pasti rekod unik:

<code class="python">df_gpby = df.groupby(list(df.columns))</code>
Salin selepas log masuk

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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
Salin selepas log masuk

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!

sumber:php
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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!