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!