Pandas實(shí)現(xiàn)兩個(gè)表的連接功能的方法詳解
上次介紹了pandas
的多條件篩選,這些都是一些數(shù)據(jù)處理的必要技能,也不貪多,咱們每次學(xué)習(xí)一點(diǎn)。
這次咱們說說pandas
的兩個(gè)表的連接技能merge
,也就是根據(jù)一個(gè)表的條件去匹配另一個(gè)表的內(nèi)容。
話不多說,直接正文。
準(zhǔn)備數(shù)據(jù)
先導(dǎo)入模塊
import?pandas?as?pd df1?=?pd.DataFrame({ ????'姓名':?['張三',?'李四',?'王五',?'劉六',?'齊四'], ????'號(hào)碼':?['123',?'456',?'789',?'987',?'654'] }) df2?=?pd.DataFrame({ ????'姓名':?['張三',?'張三',?'張三',?'李四',?'李四',?'李四',?'李四',?'王五',?'王五',?'劉玉',?'胡軍',?'劉玉',?'劉六',?'劉六',?'劉六',?'劉六',?'劉克',?'劉玉',?'齊七',?'齊七',?'齊七',?'齊七',?'馮亮',?'劉玉',?'王云'], ????'號(hào)碼':?['123',?'123',?'123',?'123',?'123',?'456',?'456',?'456',?'456',?'456',?'741',?'741',?'741',?'741',?'741',?'789',?'789',?'789',?'789',?'789',?'852',?'852',?'852',?'852',?'852'], ????'日期':?['2022-03-13',?'2022-03-06',?'2022-01-30',?'2022-01-04',?'2022-02-26',?'2022-03-26',?'2022-03-06',?'2022-01-30',?'2022-01-29',?'2022-03-13',?'2022-03-06',?'2022-02-19',?'2022-02-04',?'2022-03-10',?'2022-04-19',?'2022-03-10',?'2022-01-29',?'2022-02-19',?'2022-03-06',?'2022-03-26',?'2022-01-04',?'2022-02-04',?'2022-04-19',?'2022-02-26',?'2022-03-06'], ????'方案':?['G1012',?'G1022',?'G1002',?'G1007',?'G1017',?'G1023',?'G1018',?'G1003',?'G1008',?'G1013',?'G1020',?'G1015',?'G1010',?'G1005',?'G1025',?'G1004',?'G1009',?'G1014',?'G1019',?'G1024',?'G1006',?'G1011',?'G1026',?'G1016',?'G1021'] })
輸出內(nèi)容
df1內(nèi)容
姓名 號(hào)碼
0 張三 123
1 李四 456
2 王五 789
3 劉六 987
4 齊四 654
df2內(nèi)容:
姓名 號(hào)碼 日期 方案
0 張三 123 2022-03-13 G1012
1 張三 123 2022-03-06 G1022
2 張三 123 2022-01-30 G1002
3 李四 123 2022-01-04 G1007
4 李四 123 2022-02-26 G1017
5 李四 456 2022-03-26 G1023
6 李四 456 2022-03-06 G1018
7 王五 456 2022-01-30 G1003
8 王五 456 2022-01-29 G1008
9 劉玉 456 2022-03-13 G1013
10 胡軍 741 2022-03-06 G1020
11 劉玉 741 2022-02-19 G1015
12 劉六 741 2022-02-04 G1010
13 劉六 741 2022-03-10 G1005
14 劉六 741 2022-04-19 G1025
15 劉六 789 2022-03-10 G1004
16 劉克 789 2022-01-29 G1009
17 劉玉 789 2022-02-19 G1014
18 齊七 789 2022-03-06 G1019
19 齊七 789 2022-03-26 G1024
20 齊七 852 2022-01-04 G1006
21 齊七 852 2022-02-04 G1011
22 馮亮 852 2022-04-19 G1026
23 劉玉 852 2022-02-26 G1016
24 王云 852 2022-03-06 G1021
連接
函數(shù)說明:pd.merge(left=df1(需要匹配的原始表), right=df2(被匹配的數(shù)據(jù)表), on="姓名"(需要匹配的條件列), how="inner"(連接方式))
內(nèi)連接
how
默認(rèn)為inner
:內(nèi)連接查詢特點(diǎn)是df1
有匹配的才顯示,不匹配的不顯示
df?=?pd.merge(left=df1,?right=df2,?on="姓名",?how="inner")
輸出:
姓名 號(hào)碼_x 號(hào)碼_y 日期 方案
0 張三 123 123 2022-03-13 G1012
1 張三 123 123 2022-03-06 G1022
2 張三 123 123 2022-01-30 G1002
3 李四 456 123 2022-01-04 G1007
4 李四 456 123 2022-02-26 G1017
5 李四 456 456 2022-03-26 G1023
6 李四 456 456 2022-03-06 G1018
7 王五 789 456 2022-01-30 G1003
8 王五 789 456 2022-01-29 G1008
9 劉六 987 741 2022-02-04 G1010
10 劉六 987 741 2022-03-10 G1005
11 劉六 987 741 2022-04-19 G1025
12 劉六 987 789 2022-03-10 G1004
df1
表里需要匹配的姓名里,在df2
里面能匹配上姓名的都會(huì)列出來,而匹配不上的,都不會(huì)列出來,包括df1
里面的內(nèi)容
小提示:如果兩表有相同列名的,會(huì)自動(dòng)在列名后面加_x
,_y
來區(qū)分
外連接
how="outer"
為外連接:查詢特點(diǎn)是無論匹不匹配
都顯示,對(duì)應(yīng)的值沒有則顯示空
df?=?pd.merge(left=df1,?right=df2,?on="姓名",?how="outer")
輸出:
姓名 號(hào)碼_x 號(hào)碼_y 日期 方案
0 張三 123 123 2022-03-13 G1012
1 張三 123 123 2022-03-06 G1022
2 張三 123 123 2022-01-30 G1002
3 李四 456 123 2022-01-04 G1007
4 李四 456 123 2022-02-26 G1017
5 李四 456 456 2022-03-26 G1023
6 李四 456 456 2022-03-06 G1018
7 王五 789 456 2022-01-30 G1003
8 王五 789 456 2022-01-29 G1008
9 劉六 987 741 2022-02-04 G1010
10 劉六 987 741 2022-03-10 G1005
11 劉六 987 741 2022-04-19 G1025
12 劉六 987 789 2022-03-10 G1004
13 齊四 654 NaN NaN NaN
14 劉玉 NaN 456 2022-03-13 G1013
15 劉玉 NaN 741 2022-02-19 G1015
16 劉玉 NaN 789 2022-02-19 G1014
17 劉玉 NaN 852 2022-02-26 G1016
18 胡軍 NaN 741 2022-03-06 G1020
19 劉克 NaN 789 2022-01-29 G1009
20 齊七 NaN 789 2022-03-06 G1019
21 齊七 NaN 789 2022-03-26 G1024
22 齊七 NaN 852 2022-01-04 G1006
23 齊七 NaN 852 2022-02-04 G1011
24 馮亮 NaN 852 2022-04-19 G1026
25 王云 NaN 852 2022-03-06 G1021
df1
表里索引13
里的齊四
無匹配,是空值,而在df2
里面的內(nèi)容都會(huì)列出來,和df1
匹配不上的其它列的內(nèi)容也是空值
注意:這有點(diǎn)互相匹配的意思喲
左連接
how="left"
為左連接:查詢表示左邊的值全部顯示,如右邊無匹配則顯示空。但是右邊有的值匹配不了左邊則不顯示
df?=?pd.merge(left=df1,?right=df2,?on="姓名",?how="outer")
輸出:
姓名 號(hào)碼_x 號(hào)碼_y 日期 方案
0 張三 123 123 2022-03-13 G1012
1 張三 123 123 2022-03-06 G1022
2 張三 123 123 2022-01-30 G1002
3 李四 456 123 2022-01-04 G1007
4 李四 456 123 2022-02-26 G1017
5 李四 456 456 2022-03-26 G1023
6 李四 456 456 2022-03-06 G1018
7 王五 789 456 2022-01-30 G1003
8 王五 789 456 2022-01-29 G1008
9 劉六 987 741 2022-02-04 G1010
10 劉六 987 741 2022-03-10 G1005
11 劉六 987 741 2022-04-19 G1025
12 劉六 987 789 2022-03-10 G1004
13 齊四 654 NaN NaN NaN
df1
表里索引13
里的齊四
還是無匹配,是空值,而在df2
里面的內(nèi)容就不會(huì)列出來了
右連接
how="right"
為右連接:與左連接相反
df?=?pd.merge(left=df1,?right=df2,?on="姓名",?how="right")
輸出:
姓名 號(hào)碼_x 號(hào)碼_y 日期 方案
0 張三 123 123 2022-03-13 G1012
1 張三 123 123 2022-03-06 G1022
2 張三 123 123 2022-01-30 G1002
3 李四 456 123 2022-01-04 G1007
4 李四 456 123 2022-02-26 G1017
5 李四 456 456 2022-03-26 G1023
6 李四 456 456 2022-03-06 G1018
7 王五 789 456 2022-01-30 G1003
8 王五 789 456 2022-01-29 G1008
9 劉玉 NaN 456 2022-03-13 G1013
10 胡軍 NaN 741 2022-03-06 G1020
11 劉玉 NaN 741 2022-02-19 G1015
12 劉六 987 741 2022-02-04 G1010
13 劉六 987 741 2022-03-10 G1005
14 劉六 987 741 2022-04-19 G1025
15 劉六 987 789 2022-03-10 G1004
16 劉克 NaN 789 2022-01-29 G1009
17 劉玉 NaN 789 2022-02-19 G1014
18 齊七 NaN 789 2022-03-06 G1019
19 齊七 NaN 789 2022-03-26 G1024
20 齊七 NaN 852 2022-01-04 G1006
21 齊七 NaN 852 2022-02-04 G1011
22 馮亮 NaN 852 2022-04-19 G1026
23 劉玉 NaN 852 2022-02-26 G1016
24 王云 NaN 852 2022-03-06 G1021
右連接正好與左連接相反,df1
里面匹配不上的不顯示,df2
里面的內(nèi)容全都出來了,匹配不上df1
的其它列值則為空值
PS這完全是反向匹配呀
到此這篇關(guān)于Pandas實(shí)現(xiàn)兩個(gè)表的連接功能的方法詳解的文章就介紹到這了,更多相關(guān)Pandas表的連接內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python下的opencv畫矩形和文字注釋的實(shí)現(xiàn)方法
今天小編就為大家分享一篇python下的opencv畫矩形和文字注釋的實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-07-07Python實(shí)現(xiàn)的多線程端口掃描工具分享
這篇文章主要介紹了Python實(shí)現(xiàn)的多線程端口掃描工具分享,工具實(shí)現(xiàn)了掃單IP和掃IP段功能,本文給出運(yùn)行效果和實(shí)現(xiàn)源碼,需要的朋友可以參考下2015-01-01Python實(shí)現(xiàn)自動(dòng)簽到腳本的示例代碼
這篇文章主要介紹了Python實(shí)現(xiàn)自動(dòng)簽到腳本的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08Tensorflow訓(xùn)練模型默認(rèn)占滿所有GPU的解決方案
這篇文章主要介紹了Tensorflow訓(xùn)練模型默認(rèn)占滿所有GPU的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-05-05python中使用you-get庫批量在線下載bilibili視頻的教程
這篇文章主要介紹了使用python中you-get庫批量在線下載bilibili視頻的方法,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-03-03OpenCV實(shí)現(xiàn)常見的四種圖像幾何變換
這篇文章主要介紹了利用OpenCV實(shí)現(xiàn)的四種圖像幾何變換:縮放、翻轉(zhuǎn)、仿射變換及透視。文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編學(xué)習(xí)一下2022-04-04Python多線程采集二手房源數(shù)據(jù)信息流程詳解
這篇文章主要介紹了Python多線程采集二手房源數(shù)據(jù)信息流程,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧2023-05-05解決pyecharts運(yùn)行后產(chǎn)生的html文件用瀏覽器打開空白
這篇文章主要介紹了解決pyecharts運(yùn)行后產(chǎn)生的html文件用瀏覽器打開空白,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03