如何基於列合併資料幀,保留第一個資料幀的資訊?

Mary-Kate Olsen
發布: 2024-10-31 05:17:02
原創
915 人瀏覽過

How to Merge DataFrames Based on a Column, Preserving the First DataFrame's Information?

如何基於列合併DataFrame,保留第一個DataFrame 的資訊

給定兩個具有重疊但不相同行的DataFrame,您可以根據特定的條件合併它們將資訊從一個列新增到另一個列。在本例中,您想要合併兩個資料框 df1 和 df2,其中 df1 包含有關年齡的信息,df2 包含有關性別的信息。以下是如何在保留第一個資料幀的資訊的同時執行此操作。

解決方案

要合併資料幀並保留第一個資料幀的信息,請使用map 函數以及set_index 創建的Series:

<code class="python">df1['Sex'] = df1['Name'].map(df2.set_index('Name')['Sex'])</code>
登入後複製

例如:

<code class="python">df1 = pd.DataFrame({'Name': ['Tom', 'Sara', 'Eva', 'Jack', 'Laura'], 
                     'Age': [34, 18, 44, 27, 30], 
                     'Sex': None})

df2 = pd.DataFrame({'Name': ['Tom', 'Paul', 'Eva', 'Jack', 'Michelle'], 
                     'Sex': ['M', 'M', 'F', 'M', 'F']})

df1['Sex'] = df1['Name'].map(df2.set_index('Name')['Sex'])

print(df1)</code>
登入後複製

輸出:

   Name  Age Sex
0   Tom  34   M
1  Sara  18  NaN
2   Eva  44   F
3  Jack  27   M
4 Laura  30  NaN
登入後複製
登入後複製

替代解決方案

實現相同結果的另一種方法是合併使用左聯接的資料幀:

<code class="python">df = df1.merge(df2[['Name', 'Sex']], on='Name', how='left')</code>
登入後複製

範例:

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

print(df)</code>
登入後複製

輸出:

   Name  Age Sex
0   Tom  34   M
1  Sara  18  NaN
2   Eva  44   F
3  Jack  27   M
4 Laura  30  NaN
登入後複製
登入後複製

處理多個聯接列

如果您需要合併多列,請使用相同的左連接方法並指定附加連接列:

<code class="python">df = df1.merge(df2[['Name', 'Sex', 'Year', 'Code']], on=['Year', 'Code'], how='left')</code>
登入後複製

錯誤處理:重複連接列

如果由於重複連接而遇到錯誤列,則透過刪除重複項或使用字典進行映射來處理它。

以上是如何基於列合併資料幀,保留第一個資料幀的資訊?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!