Bagaimana untuk menggabungkan bingkai data untuk menambah nilai yang hilang berdasarkan lajur yang sepadan?

Linda Hamilton
Lepaskan: 2024-10-29 12:50:29
asal
266 orang telah melayarinya

How to merge dataframes to append missing values based on a matching column?

Menggabungkan DataFrames untuk Menambah Nilai Hilang Berdasarkan Lajur Padanan

Dalam senario yang diberikan, matlamatnya adalah untuk menggabungkan dua bingkai data, df1 dan df2, berdasarkan lajur Nama. Walau bagaimanapun, output yang dikehendaki adalah untuk menyimpan maklumat daripada df1 dan mengisi nilai yang hilang dari df2 dengan NaN. Hasilnya sepatutnya kelihatan seperti:

    Name  Age  Sex
0    Tom   34    M
1   Sara   18  NaN
2    Eva   44    F
3   Jack   27    M
4  Laura   30  NaN
Salin selepas log masuk

Kaedah 1: Menggunakan peta mengikut Siri Dibuat oleh set_index

Pendekatan ini melibatkan mencipta Siri daripada df2 dengan menetapkan lajur Nama sebagai indeks. Kemudian, gunakan kaedah map() untuk memadankan dan mengisi nilai Sex dalam df1.

<code class="python">df1['Sex'] = df1['Name'].map(df2.set_index('Name')['Sex'])

print(df1)</code>
Salin selepas log masuk

Kaedah 2: Penyelesaian Alternatif dengan Gabungan Menggunakan Left Join

An penyelesaian alternatif ialah menggabungkan df1 dan df2 menggunakan pendekatan gabungan kiri. Ini memastikan bahawa semua baris daripada df1 dikekalkan dan nilai yang tiada daripada df2 diisi dengan NaN.

<code class="python">df = df1.merge(df2[['Name', 'Sex']], on='Name', how='left')

print(df)</code>
Salin selepas log masuk

Kaedah 3: Pemetaan dengan Berbilang Lajur Menggunakan Gabungan dengan Left Join

Jika berbilang lajur diperlukan untuk penggabungan (cth. Nama dan Tahun, Kod), gunakan cantum dengan gabungan kiri, nyatakan lajur yang diingini.

<code class="python"># Merge by all columns
df = df1.merge(df2, on=['Year', 'Code'], how='left')

# Merge by specified columns
df = df1.merge(df2[['Year', 'Code', 'Val']], on=['Year', 'Code'], how='left')</code>
Salin selepas log masuk

Mengendalikan Ralat dengan Kekunci Pendua

Dalam sesetengah kes, nilai Nama pendua mungkin wujud, mengakibatkan ralat. Untuk menyelesaikan masalah ini, pertimbangkan untuk mengalih keluar pendua atau menggunakan pemetaan berasaskan kamus untuk memastikan nilai padanan terakhir dipilih.

<code class="python"># Remove duplicates and create a Series for mapping
s = df2.drop_duplicates('Name').set_index('Name')['Val']
df1['New'] = df1['Name'].map(s)</code>
Salin selepas log masuk

Dengan menggunakan mana-mana kaedah ini, anda boleh menggabungkan bingkai data dengan berkesan, mengekalkan maklumat daripada yang utama bingkai data dan mengisi nilai yang hilang dengan NaN.

Atas ialah kandungan terperinci Bagaimana untuk menggabungkan bingkai data untuk menambah nilai yang hilang berdasarkan lajur yang sepadan?. 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