<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
上次介紹了pandas
的多條件篩選,這些都是一些資料處理的必要技能,也不貪多,咱們每次學習一點。
這次咱們說說pandas
的兩個表的連線技能merge
,也就是根據一個表的條件去匹配另一個表的內容。
話不多說,直接正文。
import pandas as pd df1 = pd.DataFrame({ '姓名': ['張三', '李四', '王五', '劉六', '齊四'], '號碼': ['123', '456', '789', '987', '654'] }) df2 = pd.DataFrame({ '姓名': ['張三', '張三', '張三', '李四', '李四', '李四', '李四', '王五', '王五', '劉玉', '胡軍', '劉玉', '劉六', '劉六', '劉六', '劉六', '劉克', '劉玉', '齊七', '齊七', '齊七', '齊七', '馮亮', '劉玉', '王雲'], '號碼': ['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'] })
df1內容
姓名 號碼
0 張三 123
1 李四 456
2 王五 789
3 劉六 987
4 齊四 654
df2內容:
姓名 號碼 日期 方案
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
函數說明:pd.merge(left=df1(需要匹配的原始表), right=df2(被匹配的資料表), on="姓名"(需要匹配的條件列), how="inner"(連線方式))
how
預設為inner
:內連線查詢特點是df1
有匹配的才顯示,不匹配的不顯示
df = pd.merge(left=df1, right=df2, on="姓名", how="inner")
輸出:
姓名 號碼_x 號碼_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
裡面能匹配上姓名的都會列出來,而匹配不上的,都不會列出來,包括df1
裡面的內容
小提示:如果兩表有相同列名的,會自動在列名後面加_x
,_y
來區分
how="outer"
為外連線:查詢特點是無論匹不匹配
都顯示,對應的值沒有則顯示空
df = pd.merge(left=df1, right=df2, on="姓名", how="outer")
輸出:
姓名 號碼_x 號碼_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
裡面的內容都會列出來,和df1
匹配不上的其它列的內容也是空值
注意:這有點互相匹配的意思喲
how="left"
為左連線:查詢表示左邊的值全部顯示,如右邊無匹配則顯示空。但是右邊有的值匹配不了左邊則不顯示
df = pd.merge(left=df1, right=df2, on="姓名", how="outer")
輸出:
姓名 號碼_x 號碼_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
裡面的內容就不會列出來了
how="right"
為右連線:與左連線相反
df = pd.merge(left=df1, right=df2, on="姓名", how="right")
輸出:
姓名 號碼_x 號碼_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
裡面的內容全都出來了,匹配不上df1
的其它列值則為空值
PS這完全是反向匹配呀
到此這篇關於Pandas實現兩個表的連線功能的方法詳解的文章就介紹到這了,更多相關Pandas表的連線內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45