首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Pandas实现Excel数据表的连接操作

Pandas实现Excel数据表的连接操作

原创
作者头像
软件架构师Michael
发布2022-10-22 19:13:45
发布2022-10-22 19:13:45
1.3K0
举报

Pandas用于两个表的连接技能merge,也就是根据一个表的条件去匹配另一个表的内容。

话不多说,直接上代码吧

准备数据,导入模块

代码语言:javascript
复制
import pandas as pd
df1 = pd.DataFrame({
    '姓名': ['张三', '李四', '王五', '刘六', '齐四'],
    '号码': ['123', '456', '789', '987', '654']
})
代码语言:javascript
复制
	姓名	号码
0	张三	123
1	李四	456
2	王五	789
3	刘六	987
4	齐四	654
代码语言:javascript
复制
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']
})
代码语言:javascript
复制
df2
代码语言:javascript
复制
姓名	号码	日期	方案
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

代码语言:javascript
复制
df = pd.merge(left=df1, right=df2, on="姓名", how="inner")
代码语言:javascript
复制
df
代码语言:javascript
复制
姓名	号码_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

代码语言:javascript
复制
df3 = pd.merge(left=df1, right=df2, on="姓名", how="outer")
代码语言:javascript
复制
df3
代码语言:javascript
复制
姓名	号码_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表里需要匹配的姓名里,在df2里面能匹配上姓名的都会列出来,而匹配不上的,都不会列出来,包括df1里面的内容

【小结】

可以对比下我们SQL里面的表连接的各种操作,很容易就理解了。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档