参数:
how
指定连接方式,
- 两个表中想要连接的列不具备相同的列名,通过
left_on
和right_on
可以实现
- 如果两个表中的列出现了重复的列名,那么可以通过
suffixes
参数指定
- 出现重复元素,指定
on
参数为多个列使得正确连接
validate
参数来检查连接的唯一性模式,这里共有三种模式,即一对一连接·1:1
,一对多连接 1:m
,多对一连接 m:1
连接,第一个是指左右表的键都是唯一的,后面两个分别指左表键唯一和右表键唯一。
- 【例子】上图左连接
df1 = pd.DataFrame({
'Name':['San Zhang','Si Li'],
'Age':[20,30]})
df2 = pd.DataFrame({
'Name':['Si Li','Wu Wang'],
'Gender':['F','M']})
df1.merge(df2, on='Name', how='left')
'''
Name Age Gender
0 San Zhang 20 NaN
1 Si Li 30 F
'''
df1 = pd.DataFrame({
'df1_name':['San Zhang','Si Li'],
'Age':[20,30]})
df2 = pd.DataFrame({
'df2_name':['Si Li','Wu Wang'],
'Gender':['F','M']})
df1.merge(df2, left_on='df1_name', right_on='df2_name', how='left')
'''
df1_name Age df2_name Gender
0 San Zhang 20 NaN NaN
1 Si Li 30 Si Li F
'''
- 【例子】合并考试成绩的时候,第一个表记录了语文成绩,第二个是数学成绩
df1 = pd.DataFrame({
'Name':['San Zhang'],'Grade':[70]})
df2 = pd.DataFrame({
'Name':['San Zhang'],'Grade':[80]})
df1.merge(df2, on='Name', how='left', suffixes=['_Chinese','_Math'])
'''
Name Grade_Chinese Grade_Math
0 San Zhang 70 80
'''
In [14]: df1
Out[14]:
Name Age Class
0 San Zhang 20 one
1 San Zhang 21 two
In [15]: df2
Out[15]:
Name Gender Class
0 San Zhang F two
1 San Zhang M one
df1.merge(df2, on='Name', how='left')
'''
Name Age Class_x Gender Class_y
0 San Zhang 20 one F two
1 San Zhang 20 one M one
2 San Zhang 21 two F two
3 San Zhang 21 two M one
'''
df1.merge(df2, on=['Name', 'Class'], how='left')
'''
Name Age Class Gender
0 San Zhang 20 one M
1 San Zhang 21 two F
'''