資料合併:初探merge用法

更新 發佈閱讀 4 分鐘
vocus|新世代的創作平台

雖然之前用爬蟲的時候有用過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(右)

price(左)和change(右)

如何合併?

直接合併

df = pd.merge(price, change)
vocus|新世代的創作平台

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

df = pd.merge(change, price)
vocus|新世代的創作平台

可以發現change和price這兩欄的先後順序變了,但整體是沒有變化的!

指定要以誰為基準合併

上述的直接合併,其實也可以寫成以下的樣子:

df = price.merge(change)

以price為基準,將change合併到price。

關於how這個參數

how這個參數有以下4種不同的值:

  1. inner(預設)
  2. outer
  3. left
  4. right

inner(預設)

  • inner是how的預設值,代表將兩者取「交集」,不特別指定的時候merge就會採用inner來對dataframe進行合併。

outer

  • outer代表將兩者取「聯集」,兩個dataframe的所有欄位在合併後都會被保留下來,而空值的部分則會被NaN填充。
df = price.merge(change, how="outer")
how的值為outer時,保留了price和change中的所有欄位,空值以NaN填充。

how的值為outer時,保留了price和change中的所有欄位,空值以NaN填充。

left

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

how的值為left時,price的所有欄位都被保留,而change中因為沒有stockID=1268所對應的資料,因此被NaN填充。

right

  • 和left相反,right代表保留第二個(我理解為程式碼中「右邊」那個)dataframe中的所有欄位,並將左邊那個dataframe合併後的空值以NaN填充。
df = price.merge(change, how="right")
how的值為left時,和為left時的結果正好完全相反。

how的值為left時,和為left時的結果正好完全相反。



以上就是merge最基本的用法和參數how的理解,希望能對和我一樣有時候看不太懂某些說明的人有些幫助。





留言
avatar-img
施政宇的沙龍
0會員
3內容數
你可能也想看
Thumbnail
背景:從冷門配角到市場主線,算力與電力被重新定價   小P從2008進入股市,每一個時期的投資亮點都不同,記得2009蘋果手機剛上市,當時蘋果只要在媒體上提到哪一間供應鏈,隔天股價就有驚人的表現,當時光學鏡頭非常熱門,因為手機第一次搭上鏡頭可以拍照,也造就傳統相機廠的殞落,如今手機已經全面普及,題
Thumbnail
背景:從冷門配角到市場主線,算力與電力被重新定價   小P從2008進入股市,每一個時期的投資亮點都不同,記得2009蘋果手機剛上市,當時蘋果只要在媒體上提到哪一間供應鏈,隔天股價就有驚人的表現,當時光學鏡頭非常熱門,因為手機第一次搭上鏡頭可以拍照,也造就傳統相機廠的殞落,如今手機已經全面普及,題
Thumbnail
《轉轉生》(Re:INCARNATION)為奈及利亞編舞家庫德斯.奧尼奎庫與 Q 舞團創作的當代舞蹈作品,結合拉各斯街頭節奏、Afrobeat/Afrobeats、以及約魯巴宇宙觀的非線性時間,建構出關於輪迴的「誕生—死亡—重生」儀式結構。本文將從約魯巴哲學概念出發,解析其去殖民的身體政治。
Thumbnail
《轉轉生》(Re:INCARNATION)為奈及利亞編舞家庫德斯.奧尼奎庫與 Q 舞團創作的當代舞蹈作品,結合拉各斯街頭節奏、Afrobeat/Afrobeats、以及約魯巴宇宙觀的非線性時間,建構出關於輪迴的「誕生—死亡—重生」儀式結構。本文將從約魯巴哲學概念出發,解析其去殖民的身體政治。
Thumbnail
題目敘述 題目會給定兩個pandas DataFrame作為輸入,要求我們將兩張資料表,依照原有的順序串接在一起。 題目的原文敘述 測試範例 Example 1: Input: df1 +------------+---------+-----+ | student_id | name
Thumbnail
題目敘述 題目會給定兩個pandas DataFrame作為輸入,要求我們將兩張資料表,依照原有的順序串接在一起。 題目的原文敘述 測試範例 Example 1: Input: df1 +------------+---------+-----+ | student_id | name
Thumbnail
這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。
Thumbnail
這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
Thumbnail
本文介紹瞭如何使用 Python pandas 進行資料分析,包括如何使用 corr() 函數針對數字類型的欄位進行分析,以及如何刪除不需要的欄位和取得想要的小數位數。
Thumbnail
本文介紹瞭如何使用 Python pandas 進行資料分析,包括如何使用 corr() 函數針對數字類型的欄位進行分析,以及如何刪除不需要的欄位和取得想要的小數位數。
Thumbnail
如何用Python將DataFrame中的資料擷取維新的DataFrame?
Thumbnail
如何用Python將DataFrame中的資料擷取維新的DataFrame?
Thumbnail
題目敘述 題目會給定一個pandas DataFrame作為輸入,要求我們以原有的資料表為基礎,將資料表做樞紐轉換,垂直方向是月份,水平方向是不同的城市,而表格內容是該城市在某個月份的溫度。 題目的原文敘述 測試範例 Example 1: Input: +--------------+-
Thumbnail
題目敘述 題目會給定一個pandas DataFrame作為輸入,要求我們以原有的資料表為基礎,將資料表做樞紐轉換,垂直方向是月份,水平方向是不同的城市,而表格內容是該城市在某個月份的溫度。 題目的原文敘述 測試範例 Example 1: Input: +--------------+-
Thumbnail
題目敘述 題目會給定一個pandas DataFrame作為輸入,要求我們以原有的資料表為基礎,融合不同的資料欄位。 以product作為index,融合quarter_1,quarter_2,quarter_3,quarter_4 這四個欄位,並且重新命名為quarter,並且將數值欄位名稱重
Thumbnail
題目敘述 題目會給定一個pandas DataFrame作為輸入,要求我們以原有的資料表為基礎,融合不同的資料欄位。 以product作為index,融合quarter_1,quarter_2,quarter_3,quarter_4 這四個欄位,並且重新命名為quarter,並且將數值欄位名稱重
Thumbnail
本文探討了在使用 pandas 處理資料時應注意的幾個關鍵點,以及如何減少因資料型態問題而產生的錯誤,確保資料的原始意義得以保留。主要包括Pandas 資料處理深入解析,尋找CSV之外的數據儲存方案,以及優化資料處理策略。
Thumbnail
本文探討了在使用 pandas 處理資料時應注意的幾個關鍵點,以及如何減少因資料型態問題而產生的錯誤,確保資料的原始意義得以保留。主要包括Pandas 資料處理深入解析,尋找CSV之外的數據儲存方案,以及優化資料處理策略。
Thumbnail
pandas是用於資料操縱和分析的Python軟體庫。它建造在 NumPy 基礎上,並為操縱數值表格和時間序列,提供了資料結構和運算操作。 Pandas 的主要資料結構包含 Series 和 DataFrame 物件,由於 Pandas 本身基 Numpy 所以在使用大量資料運算時效能表現也優於原
Thumbnail
pandas是用於資料操縱和分析的Python軟體庫。它建造在 NumPy 基礎上,並為操縱數值表格和時間序列,提供了資料結構和運算操作。 Pandas 的主要資料結構包含 Series 和 DataFrame 物件,由於 Pandas 本身基 Numpy 所以在使用大量資料運算時效能表現也優於原
Thumbnail
題目敘述 題目會給定一個pandas DataFrame作為輸入,要求我們以原有的資料表name欄位為檢查基準,刪除有缺失值None的 data rows。 題目的原文敘述 測試範例 Example 1: Input: +------------+---------+-----+ | s
Thumbnail
題目敘述 題目會給定一個pandas DataFrame作為輸入,要求我們以原有的資料表name欄位為檢查基準,刪除有缺失值None的 data rows。 題目的原文敘述 測試範例 Example 1: Input: +------------+---------+-----+ | s
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News