Menggabungkan DataFrames pada Lajur sambil Memelihara Maklumat
Apabila bekerja dengan data dalam Python menggunakan Panda, menggabungkan bingkai data berdasarkan lajur biasa adalah perkara biasa tugasan. Walau bagaimanapun, kadangkala adalah perlu untuk mengekalkan maklumat daripada kedua-dua bingkai data, terutamanya apabila ia mengandungi data yang bertindih tetapi tidak lengkap. Artikel ini meneroka penyelesaian untuk menggabungkan bingkai data pada lajur sambil memastikan maklumat daripada bingkai data utama dipelihara.
Pernyataan Masalah
Pertimbangkan dua bingkai data, df1 dan df2. df1 mengandungi maklumat tentang umur individu, manakala df2 mengandungi jantina mereka. Matlamatnya adalah untuk menggabungkan df1 dan df2 pada lajur 'Nama', tetapi hanya menyimpan maklumat daripada df1. Individu mungkin tidak selalu hadir dalam kedua-dua bingkai data.
Penyelesaian
Untuk mencapai ini, kita boleh menggunakan kaedah map() bagi Siri yang dicipta dengan menetapkan indeks bagi satu bingkai data ke lajur yang kami ingin gabungkan. Kaedah map() membolehkan kami menggunakan fungsi pemetaan, yang dalam kes ini akan menjadi carian dalam bingkai data yang lain.
<code class="python"># Create the dataframes df1 = pd.DataFrame({'Name': ['Tom', 'Sara', 'Eva', 'Jack', 'Laura'], 'Age': [34, 18, 44, 27, 30]}) df2 = pd.DataFrame({'Name': ['Tom', 'Paul', 'Eva', 'Jack', 'Michelle'], 'Sex': ['M', 'M', 'F', 'M', 'F']}) # Set the index of df2 to Name df2.set_index('Name', inplace=True) # Perform the lookup using map df1['Sex'] = df1['Name'].map(df2['Sex']) # Display the merged dataframe print(df1)</code>
Penyelesaian Alternatif: Left Join
Sebagai alternatif, kita boleh menggunakan cantuman dengan cantuman kiri, yang memastikan semua baris daripada df1 disertakan dalam rangka data gabungan, walaupun tiada baris yang sepadan dalam df2.
<code class="python"># Perform the left join df3 = df1.merge(df2, on='Name', how='left') # Display the merged dataframe print(df3)</code>
Nota: Jika bingkai data mengandungi berbilang lajur untuk penggabungan, gunakan merge(on=['Year', 'Code'], how='left ') atau tentukan lajur selepas cantuman kiri (cth., df1.merge(df2[['Tahun', 'Kod', 'Val']], pada=['Tahun', 'Kod'], how='left')).
Mengendalikan Pendua
Jika lajur digunakan untuk penggabungan mempunyai pendua, adalah penting untuk mengendalikan nilai pendua untuk mengelakkan kekaburan. Ini boleh dilakukan menggunakan drop_duplicates() atau dengan menggunakan kamus untuk menentukan pemetaan.
Atas ialah kandungan terperinci Bagaimana untuk Menggabungkan DataFrames pada Lajur Semasa Memelihara Maklumat daripada DataFrame Utama?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!