
雖然之前用爬蟲的時候有用過Pandas來處理過爬到的表格,但對Pandas應該只能算是一知半解,每次遇到不會就是上網查語法要怎麼寫,而且查的次數好像有點多,想了想自己是沒有好好地學Pandas的各種使用方法,著實浪費了他的強大功能,所以就從merge來開始吧!
接下來的用字遣詞可能不是很專業(可能可以把可能拿掉XD),主要是我對每個語法的個人理解,除了用來紀錄自己的想法,也順便當作分享。
Merge
merge是用來合併兩個有共同欄 (column)的dataframe的方法
首先我先創建兩個略有不同的dataframe,方便後續理解每個方法和參數。
import pandas as pd
# 創建一個公司代號和價格對應的dataframe
price = pd.DataFrame(
{
"stockID": ["2330", "0050", "006208", "1268"],
"price": ["1085", "196.95", "115.60", "152.5"]
}
)
# 創建一個公司代號和漲跌幅對應的dataframe
change = pd.DataFrame(
{
"stockID": ["2330", "0050", "006208", "1217"],
"change": ["2.36%", "1.52%", "1.40%", "0.41%"]
}
)
就會得到以下這兩個dataframe:

price(左)和change(右)
如何合併?
直接合併
df = pd.merge(price, change)

merge可以直接使用來達到合併dataframe的作用,從輸出結果可以得知預設是取兩者的交集。那如果把括號裡的順序對調呢?
df = pd.merge(change, price)

可以發現change和price這兩欄的先後順序變了,但整體是沒有變化的!
指定要以誰為基準合併
上述的直接合併,其實也可以寫成以下的樣子:
df = price.merge(change)
以price為基準,將change合併到price。
關於how這個參數
how這個參數有以下4種不同的值:
- inner(預設)
- outer
- left
- right
inner(預設)
- inner是how的預設值,代表將兩者取「交集」,不特別指定的時候merge就會採用inner來對dataframe進行合併。
outer
- outer代表將兩者取「聯集」,兩個dataframe的所有欄位在合併後都會被保留下來,而空值的部分則會被NaN填充。
df = price.merge(change, how="outer")

how的值為outer時,保留了price和change中的所有欄位,空值以NaN填充。
left
- left代表保留第一個(我理解為程式碼中「左邊」那個)dataframe中的所有欄位,並將右邊那個dataframe合併後的空值以NaN填充。
df = price.merge(change, how="left")

how的值為left時,price的所有欄位都被保留,而change中因為沒有stockID=1268所對應的資料,因此被NaN填充。
right
- 和left相反,right代表保留第二個(我理解為程式碼中「右邊」那個)dataframe中的所有欄位,並將左邊那個dataframe合併後的空值以NaN填充。
df = price.merge(change, how="right")

how的值為left時,和為left時的結果正好完全相反。
以上就是merge最基本的用法和參數how的理解,希望能對和我一樣有時候看不太懂某些說明的人有些幫助。