Pandas數(shù)據(jù)集的合并與連接merge()方法
merge()解析
merge()可根據(jù)一個(gè)或者多個(gè)鍵將不同的DataFrame連接在一起,類似于SQL數(shù)據(jù)庫中的合并操作。

數(shù)據(jù)連接的類型
- 一對(duì)一的連接:
df1 = pd.DataFrame({'employee': ['Bob', 'Jake', 'Lisa', 'Sue'], 'group': ['Accounting', 'Engineering', 'Engineering', 'HR']})
df2 = pd.DataFrame({'employee': ['Lisa', 'Bob', 'Jake', 'Sue'], 'hire_date': [2004, 2008, 2012, 2014]})
df3 = pd.merge(df1,df2)
df3
輸出:

df3

- 多對(duì)一的連接:
df4 = pd.DataFrame({'group': ['Accounting', 'Engineering', 'HR'], 'supervisor': ['Carly', 'Guido', 'Steve']})
pd.merge(df3,df4)
輸出:

- 多對(duì)多連接:
df5 = pd.DataFrame({'group': ['Accounting', 'Accounting', 'Engineering', 'Engineering', 'HR', 'HR'], 'skills': ['math', 'spreadsheets', 'coding', 'linux', 'spreadsheets', 'organization']})
pd.merge(df1,df5)
輸出:

merge()的主要參數(shù)
1. on 可以是列名字符串或者一個(gè)包含多列名稱的列表;
pd.merge(df1, df2, on='employee')
輸出:

這個(gè)參數(shù)只能在兩個(gè)DataFrame有共同列名的時(shí)候才可以使用。
2. left_on與right_on參數(shù)
有時(shí)你也需要合并兩個(gè)列名不同的數(shù)據(jù)集,例如前面的員工信息表中有一個(gè)字段不是employee而是name。在這種情況下,就可以用left_on和right_on參數(shù)來指定列名。
df3 = pd.DataFrame({'name': ['Bob', 'Jake', 'Lisa', 'Sue'], 'salary': [70000, 80000, 120000, 90000]})
dfx = pd.merge(df1,df3,left_on="employee",right_on="name")
輸出:


drop()刪除
如果出現(xiàn)重復(fù)列,但是列名不同時(shí),可以使用drop方法將這列去掉;
dfx.drop("name",axis=1)
輸出:

3. left_index與right_index參數(shù) 用于合并索引
df1a = df1.set_index('employee')
df2a = df2.set_index('employee')
pd.merge(df1a,df2a,left_index=True,right_index=True)
輸出:

用join()方法也可以實(shí)現(xiàn)該功能:
df1a.join(df2a)
輸出:

如果想將索引與列混合使用,那么可以通過結(jié)合left_index與 right_on,或者結(jié)合left_on與right_index來實(shí)現(xiàn)。
pd.merge(df1a, df3, left_index=True, right_on='name')
輸出:

4. how參數(shù)
how參數(shù)默認(rèn)情況下是inner,也就是取交集。how參數(shù)支持的數(shù)據(jù)連接方式還有outer、left和right。outer表示外連接,取并集。
df6 = pd.DataFrame({'name': ['Peter', 'Paul', 'Mary'], 'food': ['fish', 'beans', 'bread']}, columns=['name', 'food'])
df7 = pd.DataFrame({'name': ['Mary', 'Joseph'], 'drink': ['wine', 'beer']}, columns=['name', 'drink'])
pd.merge(df6, df7, how='outer')
輸出:

左連接和右連接返回的結(jié)果分別只包含左列和右列;
pd.merge(df6, df7, how='left')
輸出:

5. suffixes參數(shù)
如果輸出結(jié)果中有兩個(gè)重復(fù)的列名,因此pd.merge()函數(shù)會(huì)自動(dòng)為它們?cè)黾雍缶Y _x 或 _y,當(dāng)然也可以通過suffixes參數(shù)自定義后綴名。
df8 = pd.DataFrame({'name': ['Bob', 'Jake', 'Lisa', 'Sue'], 'rank': [1, 2, 3, 4]})
df9 = pd.DataFrame({'name': ['Bob', 'Jake', 'Lisa', 'Sue'], 'rank': [3, 1, 4, 2]})
pd.merge(df8, df9, on="name", suffixes=["_L", "_R"])
輸出:

suffixes參數(shù)同樣適用于任何連接方式,即使有三個(gè)及三個(gè)以上的重復(fù)列名時(shí)也同樣適用。
到此這篇關(guān)于Pandas數(shù)據(jù)集的合并與連接merge()方法的文章就介紹到這了,更多相關(guān)Pandas數(shù)據(jù)集的合并與連接內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- pandas數(shù)據(jù)合并與重塑之merge詳解
- Python?pandas數(shù)據(jù)合并merge函數(shù)用法詳解
- Pandas merge合并兩個(gè)DataFram的實(shí)現(xiàn)
- Python?Pandas數(shù)據(jù)合并pd.merge用法詳解
- pandas中DataFrame數(shù)據(jù)合并連接(merge、join、concat)
- Pandas 連接合并函數(shù)merge()詳解
- 在Pandas中DataFrame數(shù)據(jù)合并,連接(concat,merge,join)的實(shí)例
- Pandas merge合并操作的實(shí)現(xiàn)
相關(guān)文章
python獲取外網(wǎng)IP并發(fā)郵件的實(shí)現(xiàn)方法
下面小編就為大家?guī)硪黄猵ython獲取外網(wǎng)IP并發(fā)郵件的實(shí)現(xiàn)方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-10-10
Python定義一個(gè)跨越多行的字符串的多種方法小結(jié)
今天小編就為大家分享一篇Python定義一個(gè)跨越多行的字符串的多種方法小結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-07-07
python批量處理多DNS多域名的nslookup解析實(shí)現(xiàn)
這篇文章主要介紹了python批量處理多DNS多域名的nslookup解析實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-06-06
使用?OpenAI?API?和?Python?使用?GPT-3的操作方法
這篇文章主要介紹了使用?OpenAI?API?和?Python?使用?GPT-3,在本文中,我們將使用?GPT-3。我將向您展示如何訪問它,并提供一些示例來說明您可以使用它做什么,以及您可以使用它構(gòu)建什么樣的應(yīng)用程序,需要的朋友可以參考下2023-03-03
python使用Plotly繪圖工具繪制散點(diǎn)圖、線形圖
這篇文章主要為大家詳細(xì)介紹了python使用Plotly繪圖工具繪制散點(diǎn)圖、線形圖,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-04-04
使用Python獲取當(dāng)前工作目錄和執(zhí)行命令的位置
這篇文章主要介紹了使用Python獲取當(dāng)前工作目錄和執(zhí)行命令的位置,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-03-03
Python中使用Beautiful Soup庫的超詳細(xì)教程
這篇文章主要介紹了Python中使用Beautiful Soup庫的超詳細(xì)教程,示例代碼基于Python2.x版本,極力推薦!需要的朋友可以參考下2015-04-04
python利用后綴表達(dá)式實(shí)現(xiàn)計(jì)算器功能
這篇文章主要為大家詳細(xì)介紹了python利用后綴表達(dá)式實(shí)現(xiàn)計(jì)算器功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-02-02
Python筆記之a(chǎn) = [0]*x格式的含義及說明
這篇文章主要介紹了Python筆記之a(chǎn) = [0]*x格式的含義及說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-05-05

