Python: 如何用pandas.merge() 合併兩個DataFrame? 具關聯性欄位合併

加入好友
加入社群
Python: 如何用pandas.merge() 合併兩個DataFrame? 具關聯性欄位合併 - 儲蓄保險王

import pandas as pd

# 創建成績表
scores = pd.DataFrame({
‘student_id’: [‘001’, ‘002’, ‘003’, ‘004’],
‘score’: [85, 76, 92, 80]
})

# 創建基本資料表
basic_info = pd.DataFrame({
‘student_id’: [‘001’, ‘002’, ‘003’, ‘004’],
‘name’: [‘Alice’, ‘Bob’, ‘Charlie’, ‘David’],
‘gender’: [‘F’, ‘M’, ‘M’, ‘M’]
})

# 以 student_id 欄位為基準合併
merged_df = pd.merge(left=scores,
right=basic_info,
left_on=’student_id’,
right_on=’student_id’,
how=’inner’)
print(“scores:\n%r”%scores)
print(“\nbasic_info:\n%r”%basic_info)
print(“\nmerged_df:\n%r”%merged_df)

Python: 如何用pandas.merge() 合併兩個DataFrame? 具關聯性欄位合併 - 儲蓄保險王

輸出結果:

Python: 如何用pandas.merge() 合併兩個DataFrame? 具關聯性欄位合併 - 儲蓄保險王

這裡的 left_on 參數指的是左側 DataFrame 的

以 student_id 為基準的欄位名稱,

right_on 參數指的是右側 DataFrame 的

以 student_id 為基準的欄位名稱,

因為兩個 DataFrame 中的欄位名稱是一樣的,

所以也可以寫成:

merged_df = pd.merge(left=scores, right=basic_info, on=’student_id’, how=’inner’)

 

使用right_index=True

import pandas as pd

# 創建成績表
scores = pd.DataFrame({
‘student_id’: [‘001’, ‘002’, ‘003’, ‘004’],
‘score’: [85, 76, 92, 80]
})

# 創建基本資料表,並將 student_id 設定為索引
basic_info = pd.DataFrame({
‘name’: [‘Alice’, ‘Bob’, ‘Charlie’, ‘David’],
‘gender’: [‘F’, ‘M’, ‘M’, ‘M’]
}, index=[‘001’, ‘002’, ‘003’, ‘004’])
basic_info.index.name = ‘student_id’ #此行非必要
merged_df = pd.merge(left=scores,
right=basic_info,
left_on=’student_id’,
right_index=True,
how=’inner’)
print(merged_df)

Python: 如何用pandas.merge() 合併兩個DataFrame? 具關聯性欄位合併 - 儲蓄保險王

輸出結果:

Python: 如何用pandas.merge() 合併兩個DataFrame? 具關聯性欄位合併 - 儲蓄保險王

推薦hahow線上學習python: https://igrape.net/30afN

pd.merge(
left,
right,
how=’inner’,
on=None,
left_on=None,
right_on=None,
left_index=False,
right_index=False,
sort=False,
suffixes=(‘_x’, ‘_y’),
copy=True,
indicator=False,
validate=None,
)

下面是各參數的說明:

  • left: 要合併的左邊的 DataFrame。
  • right: 要合併的右邊的 DataFrame。
  • how: 合併的方式,可選值為 ‘left’, ‘right’, ‘outer’, ‘inner’,預設值為 ‘inner’。
  • on: 用來合併的欄位名稱,必須存在於左右兩個 DataFrame 中。如果 left_index=True 或 right_index=True,則此參數無效。
  • left_on: 用來合併的左邊的 DataFrame 的欄位名稱。如果 left_index=True,則此參數無效。
  • right_on: 用來合併的右邊的 DataFrame 的欄位名稱。如果 right_index=True,則此參數無效。
  • left_index: 是否以左邊的 DataFrame 的索引作為合併鍵。預設為 False。
  • right_index: 是否以右邊的 DataFrame 的索引作為合併鍵。預設為 False。
  • sort: 是否根據合併鍵排序。預設為 False。
  • suffixes: 字符串元組,用於區分具有相同名稱的左邊和右邊 DataFrame 的重複列。預設為 (‘_x’, ‘_y’)。
  • copy: 是否復製 DataFrame。如果設為 False,當左右兩個 DataFrame 共享記憶體時可能會改變原始 DataFrame。預設為 True。
  • indicator: 將一個特殊的名為 _merge 的欄位添加到結果 DataFrame,顯示每行的合併方式。預設為 False。
  • validate: 檢查合併的類型。可選值為 “one_to_one”、”one_to_many”、”many_to_one” 和 “many_to_many”。預設為 None,即不檢查。

加入好友
加入社群
Python: 如何用pandas.merge() 合併兩個DataFrame? 具關聯性欄位合併 - 儲蓄保險王

儲蓄保險王

儲蓄險是板主最喜愛的儲蓄工具,最喜愛的投資理財工具則是ETF,最喜愛的省錢工具則是信用卡

You may also like...

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *