本篇文章同步發布於 Python pandas 使用 merge 水平合併 DataFrame 資料 【Python 處理 Excel #11】
當想要的資料分開放在不同地方時,就需要透過合併資料將不同來源的資料整理在同一個地方。Excel 中通常使用 VLOOKUP
或是 MATCH
加上 INDEX
進行資料合併。用 Python pandas 處理 Excel 資料時,我通常會用 merge
方法處理簡單的資料合併。這篇文章介紹 pandas 的 merge
方法。
現在有兩個 Excel 檔案,stock.xlsx 記錄產品的庫存數量,cost_price.xlsx 記錄產品的成本價格。這個案例想要將這兩個 Excel 檔案透過 product_name
合併在一起進而得出目前的庫存金額是多少。
product_name | quantity |
---|---|
Laptop Pro | 695 |
Gaming Desktop | 470 |
Ultrabook | 295 |
product_name | price |
---|---|
Laptop Pro | 1000 |
Gaming Desktop | 1200 |
Ultrabook | 1500 |
Pandas 的 merge
方法是用來合併兩個 DataFrame 的工具。類似於 SQL 的 JOIN
操作,merge
方法可以將兩個 DataFrame 基於一個或多個共同欄位進行合併。
使用 merge
方法時,可以指定合併的方式,主要有以下幾種類型:
NaN
。NaN
。merge
方法的基本語法如下:
pd.merge(left, right, how='inner', on=None, left_on=None, right_on=None, sort=False)
inner
、outer
、left
、right
。False
,表示不進行排序。如果設為 True
,合併後的 DataFrame 將根據合併鍵進行排序。以下案例介紹如何使用 merge
方法將兩個 DataFrame 合併起來:
import pandas as pd
# 讀取 Excel 檔案
stock_df = pd.read_excel('stock.xlsx')
cost_df = pd.read_excel('cost_price.xlsx')
# 合併兩個 DataFrame,基於 product_name 欄位
merged_df = pd.merge(stock_df, cost_df, on='product_name', how='inner')
# 計算總庫存金額
merged_df['total_value'] = merged_df['quantity'] * merged_df['price']
print(merged_df)
product_name
),how='inner'
表示進行的是內合併。total_value
,該欄位計算每個產品的總庫存金額,即數量乘以價格。on
、left_on
和 right_on
參數用於指定合併的鍵 (key)。這三個參數的使用情境如下。
當兩個 DataFrame 中有相同的欄位名稱時,可以使用此參數來指定用於合併的欄位。例如方才案例演練中兩個 DataFrame 都有名稱為 product_name 的欄位,此時可以以 on
參數進行合併:
merged_df = pd.merge(stock_df, cost_price_df, on='product_name')
當左右兩側用於合併的欄位名稱不同時,可以使用 left_on
和 right_on
參數指定各自用於合併的欄位。例如左側 DataFrame 使用 product_name
欄位,而右側 DataFrame 使用 item_name
欄位進行合併:
merged_df = pd.merge(stock_df, cost_price_df, left_on='product_name', right_on='item_name')
當合併的兩個 DataFrame 有相同的欄位名稱時,merge
方法會自動為重複的欄位加上後綴字,避免欄位名稱衝突。使用者可以透過 suffixes
參數自定義這些後綴字。例如:
merged_df = pd.merge(stock_df, cost_df, on='product_name', how='inner', suffixes=('_stock', '_cost'))
在這個例子中,如果兩個 DataFrame 都有 quantity
欄位,合併後這些欄位會分別命名為 quantity_stock
和 quantity_cost
。
merge
方法能合併不同來源的資料。merge
提供多種合併方式,包括左合併、右合併、內合併和外合併,使用時要根據需求選擇合適的類型。suffixes
參數自定義欄位後綴字,避免欄位名稱衝突。本篇文章同步發布於 Python pandas 使用 merge 水平合併 DataFrame 資料 【Python 處理 Excel #11】