Python?pandas數(shù)據(jù)合并merge函數(shù)用法詳解
一、語(yǔ)法格式
介紹一下數(shù)據(jù)分析中很常用的一個(gè)函數(shù)——merge,它能夠進(jìn)行高效的數(shù)據(jù)合并操作。先看一下語(yǔ)法格式及其初步解釋?zhuān)?/p>
pd.merge(left: 'DataFrame | Series', # 左右兩個(gè)需要合并的DataFrame對(duì)象。 right: 'DataFrame | Series', how: 'str' = 'inner', # 要執(zhí)行的合并類(lèi)型,從{'left','right','outer','inner','cross'}中取值,默認(rèn)為'inner'。 on: 'IndexLabel | None' = None, # 用于連接的鍵(即列標(biāo)簽名),該鍵必須存在于左右兩個(gè)DataFrame中。若沒(méi)有指定,則以列名的交集作為連接鍵。 left_on: 'IndexLabel | None' = None, right_on: 'IndexLabel | None' = None, # 指定左右DataFrame對(duì)象中作為連接鍵的列名。適用于左右擬連接列名稱(chēng)有差異時(shí)。 left_index: 'bool' = False, right_index: 'bool' = False, # 和上,將左右frame的索引作為連接鍵,進(jìn)行數(shù)據(jù)合并。 sort: 'bool' = False, # DataFrame對(duì)象結(jié)果中,按詞典順序排序,默認(rèn)False。 suffixes: 'Suffixes' = ('_x', '_y'), # 當(dāng)左右DataFrame存在相同列名時(shí),通過(guò)該參數(shù)為其添加后綴。 copy: 'bool' = True, indicator: 'bool' = False, # 輸出結(jié)果中添加_merge列,表明每一行使用的左右鍵來(lái)源情況。 validate: 'str | None' = None # 驗(yàn)證連接鍵在左側(cè)、右側(cè)或兩側(cè)是否唯一,即'1:1','1:m','m:1'。 )
二、舉例解釋
(一)首先生成兩個(gè)DataFrame對(duì)象,以供我們案例使用:
dep_inf = {'部門(mén)':['業(yè)務(wù)一部','業(yè)務(wù)二部','業(yè)務(wù)三部','辦公室'], '城市': ['深圳','上海','北京','廣州'], '部門(mén)名稱(chēng)':['業(yè)務(wù)一部','業(yè)務(wù)二部','業(yè)務(wù)三部','辦公室']} emp_inf = {'姓名':['張飛','趙云','金蓮','關(guān)習(xí)','和珅','宋江'], '學(xué)歷':['本科','碩士','本科','本科','博士','碩士'], '部門(mén)':['業(yè)務(wù)一部','業(yè)務(wù)一部','業(yè)務(wù)二部','業(yè)務(wù)三部','業(yè)務(wù)三部','業(yè)務(wù)四部'], '城市':['北京','深圳','廣州','上海','深圳','深圳']} df_d = pd.DataFrame(dep_inf) df_e = pd.DataFrame(emp_inf)
生成的兩個(gè)DataFrame對(duì)象如下:
(二)下面舉個(gè)栗子,介紹一下主要參數(shù)
1、參數(shù)left,right:
將df_d作為左側(cè)的frame,df_e作為右側(cè)的frame,則參數(shù)left=df_d,right=df_e;
2、參數(shù)how:
當(dāng)參數(shù)how='left':僅使用左側(cè)frame的鍵;當(dāng)參數(shù)how='right':僅使用右側(cè)frame的鍵;當(dāng)參數(shù)how='outer':使用左右兩側(cè)frame的鍵的并集;當(dāng)參數(shù)how='inner':使用左右兩側(cè)frame的鍵的交集;
3、參數(shù)on:
df_d,df_e中都有“部門(mén)”列(鍵),則使用“部門(mén)”作為連接鍵,即參數(shù)on='部門(mén)'。
下面就以“部門(mén)”作為連接鍵,順便看一下參數(shù)how的效果。
pd.merge(df_d, df_e, how='left',on='部門(mén)',indicator=True) pd.merge(df_d, df_e, how='right',on='部門(mén)',indicator=True) pd.merge(df_d, df_e, how='inner',on='部門(mén)',indicator=True) pd.merge(df_d, df_e, how='outer',on='部門(mén)',indicator=True)
4、參數(shù)indicator:
在輸出結(jié)果中添加_merge列,表明每一行使用的左右鍵來(lái)源情況,如上圖所示。
同時(shí),可以看一下merge參數(shù)的結(jié)果_merge列加深對(duì)參數(shù)how的理解。
5、參數(shù)left_on,right_on:
這兩個(gè)參數(shù)其實(shí)和參數(shù)'on'是同一性質(zhì),當(dāng)左右兩個(gè)frame的連接鍵的名字相同時(shí),可以直接用參數(shù)‘on’。但是如果像本例中,左側(cè)frame鍵名為“部門(mén)名稱(chēng)”(假設(shè)左側(cè)frame中沒(méi)有“部門(mén)這一列”),右側(cè)frame鍵名為“部門(mén)”,但是其內(nèi)容實(shí)質(zhì)相同。此時(shí)就用left_on和right_on參數(shù)以替代參數(shù)on。
6、參數(shù)suffixes:
該參數(shù)默認(rèn)suffixes = ('_x', '_y'),所以命令中未寫(xiě)。
當(dāng)左右frame存在相同列名時(shí),通過(guò)該參數(shù)為其添加后綴。因?yàn)樽髠?cè)frame和右側(cè)frame均有城市、部門(mén)列,因此為了防止相同列互相覆蓋,給左右兩側(cè)的列加了后綴_x和_y以保留數(shù)據(jù)。當(dāng)然這個(gè)_x和_y是默認(rèn)后綴,你也可以根據(jù)需要修改為其他形式。
其他參數(shù)請(qǐng)參照本文第一部分:語(yǔ)法格式中的解釋。
總結(jié)
到此這篇關(guān)于Python pandas數(shù)據(jù)合并merge函數(shù)用法的文章就介紹到這了,更多相關(guān)pandas數(shù)據(jù)合并merge函數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 在Pandas中DataFrame數(shù)據(jù)合并,連接(concat,merge,join)的實(shí)例
- 詳解pandas數(shù)據(jù)合并與重塑(pd.concat篇)
- Python基礎(chǔ)之pandas數(shù)據(jù)合并
- pandas中DataFrame數(shù)據(jù)合并連接(merge、join、concat)
- 一文搞懂Python中Pandas數(shù)據(jù)合并
- Python必備技巧之Pandas數(shù)據(jù)合并函數(shù)
- pandas實(shí)現(xiàn)數(shù)據(jù)合并的示例代碼
- Python?Pandas數(shù)據(jù)合并pd.merge用法詳解
- Python利用pandas進(jìn)行數(shù)據(jù)合并詳解
- Pandas數(shù)據(jù)合并的兩種實(shí)現(xiàn)方法
- Pandas中數(shù)據(jù)合并的實(shí)現(xiàn)
相關(guān)文章
linux centos 7.x 安裝 python3.x 替換 python2.x的過(guò)程解析
這篇文章主要介紹了linux centos 7.x 安裝 python3.x 替換 python2.x的過(guò)程解析,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-12-12對(duì)python讀寫(xiě)文件去重、RE、set的使用詳解
今天小編就為大家分享一篇對(duì)python讀寫(xiě)文件去重、RE、set的使用詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-12-12Django項(xiàng)目搭建之實(shí)現(xiàn)簡(jiǎn)單的API訪(fǎng)問(wèn)
這篇文章主要給大家介紹了關(guān)于Django項(xiàng)目搭建之實(shí)現(xiàn)簡(jiǎn)單的API訪(fǎng)問(wèn)的相關(guān)資料,文中通過(guò)圖文以及示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Django具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2023-02-02Python深度學(xué)習(xí)之Pytorch初步使用
今天給大家整理了Python深度學(xué)習(xí)之Pytorch初步使用的有關(guān)知識(shí),文中介紹的非常詳細(xì),對(duì)正在學(xué)習(xí)python的小伙伴們有很好的幫助,需要的朋友可以參考下2021-05-05Python 游戲大作炫酷機(jī)甲闖關(guān)游戲爆肝數(shù)千行代碼實(shí)現(xiàn)案例進(jìn)階
本篇文章給大家?guī)?lái)Python的一個(gè)游戲大制作—機(jī)甲闖關(guān)冒險(xiǎn),數(shù)千行代碼實(shí)現(xiàn)的游戲,過(guò)程很詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的借鑒價(jià)值,需要的朋友可以參考下2021-10-10python中in在list和dict中查找效率的對(duì)比分析
今天小編就為大家分享一篇python中in在list和dict中查找效率的對(duì)比分析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-05-05基于Flask+websocket實(shí)現(xiàn)一個(gè)在線(xiàn)聊天室
在今天的互聯(lián)網(wǎng)時(shí)代,實(shí)時(shí)通信成為了許多應(yīng)用和服務(wù)的核心特色,在本文中,我們將介紹如何使用 Flask 和 Websockets 通過(guò) Flask-SocketIO 框架創(chuàng)建一個(gè)簡(jiǎn)單的在線(xiàn)聊天室,感興趣的可以跟隨小編一起了解下2023-09-09使用Pytest.main()運(yùn)行時(shí)參數(shù)不生效問(wèn)題解決
本文主要介紹了使用Pytest.main()運(yùn)行時(shí)參數(shù)不生效問(wèn)題解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-02-02