雖然之前用爬蟲的時候有用過Pandas來處理過爬到的表格,但對Pandas應該只能算是一知半解,每次遇到不會就是上網查語法要怎麼寫,而且查的次數好像有點多,想了想自己是沒有好好地學Pandas的各種使用方法,著實浪費了他的強大功能,所以就從merge來開始吧!
接下來的用字遣詞可能不是很專業(可能可以把可能拿掉XD),主要是我對每個語法的個人理解,除了用來紀錄自己的想法,也順便當作分享。
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這個參數有以下4種不同的值:
df = price.merge(change, how="outer")
how的值為outer時,保留了price和change中的所有欄位,空值以NaN填充。
df = price.merge(change, how="left")
how的值為left時,price的所有欄位都被保留,而change中因為沒有stockID=1268所對應的資料,因此被NaN填充。
df = price.merge(change, how="right")
how的值為left時,和為left時的結果正好完全相反。
以上就是merge最基本的用法和參數how的理解,希望能對和我一樣有時候看不太懂某些說明的人有些幫助。