
Pandas用于两个表的连接技能merge,也就是根据一个表的条件去匹配另一个表的内容。
话不多说,直接上代码吧
准备数据,导入模块
import pandas as pd
df1 = pd.DataFrame({
'姓名': ['张三', '李四', '王五', '刘六', '齐四'],
'号码': ['123', '456', '789', '987', '654']
})
姓名 号码
0 张三 123
1 李四 456
2 王五 789
3 刘六 987
4 齐四 654df2 = 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']
})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 G1021df = pd.merge(left=df1, right=df2, on="姓名", how="inner")df姓名 号码_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 G1004df3 = pd.merge(left=df1, right=df2, on="姓名", how="outer")df3姓名 号码_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 G1021df1表里需要匹配的姓名里,在df2里面能匹配上姓名的都会列出来,而匹配不上的,都不会列出来,包括df1里面的内容
【小结】
可以对比下我们SQL里面的表连接的各种操作,很容易就理解了。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。