Pandas可以實作高性能的記憶體合并和連接配接。當我們需要組合非常大的DataFrame時,Merge是非常有效并且快速的方法。Merge隻能在兩個DataFrame上進行聯接,分别表示為左表(left)和右表(right)。key是将兩個DataFrame連接配接在一起的公共列。最好使用在整個列中具有唯一值的key,以避免意外的行值重複。
Pandas提供了merge(),作為DataFrame之間join的實作。
有四種處理Join的基本方法(内部inner,左側left,右側right和外部outer),具體取決于需要必須保留哪些資料。
代碼1:使用一個唯一的組合key合并一個Datafame
import pandas as pd # 人員資訊dictdata1 = {'Name':['A1', 'B1', 'C1', 'D1'], 'Age':[27, 24, 22, 32], 'Address':['北京', '上海', '天津', '杭州'], 'Sex':['F', 'M', 'M', 'F']} # 人員資訊dictdata2 = {'Name':['A2', 'B2', 'C2', 'D2'], 'Age':[17, 14, 12, 52], 'Address':['上海', '上海', '天津', '南京'], 'Sex':['M', 'M', 'F', 'F']} # 構造Dataframedf = pd.DataFrame(data1,index=[0, 1, 2, 3])# 構造Dataframedf1 = pd.DataFrame(data2, index=[4, 5, 6, 7])print(df)print(df1)
輸出
Address Age Name Sex0 北京 27 A1 F1 上海 24 B1 M2 天津 22 C1 M3 杭州 32 D1 F Address Age Name Sex4 上海 17 A2 M5 上海 14 B2 M6 天津 12 C2 F7 南京 52 D2 F
現在,我們使用一個key的組合鍵
# using .merge() functionres = pd.merge(df, df1, on='key')print(res)
輸出:
代碼2:使用多個鍵merge兩個Dataframe。
使用"how"關鍵字合并Dataframe
使用"how"參數來指定如何包含哪些key。如果左表或右表中都沒有key的組合,則被Join的表中的值為NA。以下是各種選項的說明:
- left: 隻保留左邊Dataframe的資料
- right: 隻保留右邊Dataframe的資料
- outer: 保留兩個Dataframe的資料
- inner: 隻保留兩個Dataframe公共的部分
現在我們設定how = 'left',僅使用左面Dataframe中的key。
現在我們設定how = 'right',僅使用右面Dataframe中的key。
現在我們設定how = 'outer',保留兩個表的資訊。
現在我們進行設定how = 'innter',得到兩個表的交集。
使用sort參數對傳回資料集排序
使用suffixes參數定義字首,區分兩個Dataframe中相同的列
總結:
Pandas的merge的方法就介紹到這裡,下節我們介紹透視表(pivotTab)和交叉表(crossTab)