Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk menggabungkan bingkai data untuk menambah nilai yang hilang berdasarkan lajur yang sepadan?

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

Linda Hamilton
Linda Hamiltonasal
2024-10-29 12:50:29334semak imbas

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

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>

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>

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>

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>

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!

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