一、引言
在數據處理過程中,數據通常會被分成多個表格,而這些表格又會有相同的列或索引。為了將這些表格合併起來,需要用到Join操作。Join操作可以將多個表中的數據合併成一個新表,而Pandas庫提供了豐富的Join功能,本文就對Python Pandas Join操作進行詳解。
二、Join操作方式
1. Inner Join
Inner Join操作返回兩個表中有相同值的行,並將它們合併成一個新表。例如,我們有兩個表fruit和color,它們都包含了水果的名稱,但是分別包含了水果的顏色和價格。
import pandas as pd # 構造fruit表 fruit = pd.DataFrame({'name': ['apple', 'banana', 'orange', 'pear'], 'color': ['red', 'yellow', 'orange', 'green']}) # 構造color表 price = pd.DataFrame({'name': ['apple', 'banana', 'peach'], 'price': ['2.5', '1.2', '3.0']}) # 使用Inner Join操作合併fruit和color表 merged = pd.merge(fruit, price, on='name', how='inner') print(merged)
輸出結果為:
name color price 0 apple red 2.5 1 banana yellow 1.2
結果中只包含了fruit表和color表中都存在的apple和banana的信息,因為其它水果在兩個表格中都不存在。
2. Left Join
Left Join操作返回左表格中所有的行,以及右表格中和左表格匹配的行,並將它們合併成一個新表。如果右表格中沒有和左表格匹配的行,則用NULL值填充新表格中的對應列。
import pandas as pd # 構造fruit表 fruit = pd.DataFrame({'name': ['apple', 'banana', 'orange', 'pear'], 'color': ['red', 'yellow', 'orange', 'green']}) # 構造color表 price = pd.DataFrame({'name': ['apple', 'banana', 'peach'], 'price': ['2.5', '1.2', '3.0']}) # 使用Left Join操作合併fruit和price表 merged = pd.merge(fruit, price, on='name', how='left') print(merged)
輸出結果為:
name color price 0 apple red 2.5 1 banana yellow 1.2 2 orange orange None 3 pear green None
結果中包含了fruit表中所有的信息,以及price表中和fruit表匹配的信息。注意,price表中沒有orange和pear的信息,所以在新表中對應列的值為NULL值。
3. Right Join
Right Join操作返回右表格中所有的行,以及左表格中和右表格匹配的行,並將它們合併成一個新表。如果左表格中沒有和右表格匹配的行,則用NULL值填充新表格中的對應列。
import pandas as pd # 構造fruit表 fruit = pd.DataFrame({'name': ['apple', 'banana', 'orange', 'pear'], 'color': ['red', 'yellow', 'orange', 'green']}) # 構造color表 price = pd.DataFrame({'name': ['apple', 'banana', 'peach'], 'price': ['2.5', '1.2', '3.0']}) # 使用Right Join操作合併fruit和color表 merged = pd.merge(fruit, price, on='name', how='right') print(merged)
輸出結果為:
name color price 0 apple red 2.5 1 banana yellow 1.2 2 peach None 3.0
結果中包含了price表中所有的信息,以及fruit表中和price表匹配的信息。注意,fruit表中沒有peach的信息,所以在新表中對應列的值為NULL值。
4. Outer Join
Outer Join操作返回左表格和右表格中所有的行,並將它們合併成一個新表。如果左表格和右表格沒有匹配的行,則用NULL值填充對應列。
import pandas as pd # 構造fruit表 fruit = pd.DataFrame({'name': ['apple', 'banana', 'orange', 'pear'], 'color': ['red', 'yellow', 'orange', 'green']}) # 構造color表 price = pd.DataFrame({'name': ['apple', 'banana', 'peach'], 'price': ['2.5', '1.2', '3.0']}) # 使用Outer Join操作合併fruit和price表 merged = pd.merge(fruit, price, on='name', how='outer') print(merged)
輸出結果為:
name color price 0 apple red 2.5 1 banana yellow 1.2 2 orange orange None 3 pear green None 4 peach None 3.0
結果中包含了fruit表和color表中所有的信息,對於在fruit表或color表中不存在的信息將使用NULL值填充。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/194691.html