1+ import pandas as pd
2+
3+ df1 = pd .DataFrame ({
4+ '姓名' : ['张三' , '李四' , '王五' , '刘六' , '齐四' ],
5+ '号码' : ['123' , '456' , '789' , '987' , '654' ]
6+ })
7+
8+ df2 = pd .DataFrame ({
9+ '姓名' : ['张三' , '张三' , '张三' , '李四' , '李四' , '李四' , '李四' , '王五' , '王五' , '刘玉' , '胡军' , '刘玉' , '刘六' , '刘六' , '刘六' , '刘六' , '刘克' , '刘玉' , '齐七' , '齐七' , '齐七' , '齐七' , '冯亮' , '刘玉' , '王云' ],
10+
11+ '号码' : ['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' ],
12+
13+ '日期' : ['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' ],
14+
15+ '方案' : ['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' ]
16+ })
17+
18+ # how默认为”inner":内连接查询特点是有匹配的才显示,不匹配的不显示
19+ df = pd .merge (left = df1 , right = df2 , on = "姓名" , how = "inner" )
20+
21+ # how="outer"为外连接:查询特点是无论匹不匹配都显示,对应的值没有则显示空
22+ df = pd .merge (left = df1 , right = df2 , on = "姓名" , how = "outer" )
23+
24+ # how="left"为左连接:查询表示左边的值全部显示,如右边无匹配则显示空。但是右边有的值匹配不了左边则不显示
25+ df = pd .merge (left = df1 , right = df2 , on = "姓名" , how = "left" )
26+
27+ # how="right"为右连接:与左连接相反
28+ df = pd .merge (left = df1 , right = df2 , on = "姓名" , how = "right" )
29+
30+ # 如果和表合并的过程中遇到有一列两个表都同名,但是值不同,合并的时候又都想保留下来,就可以用suffixes给每个表的重复列名增加后缀。suffixes=['_1','_r']
31+ df = pd .merge (left = df1 , right = df2 , on = "姓名" , how = "right" )
32+
33+ print (df )
0 commit comments