多表横向连接——merge()
Python中使用merge()方法来实现多表的横向连接,根据参数how的值,可以进行类似sql中的左右内外的连接方式。
-
格式:
merge ( left, right, how: str = ‘inner’, on=None, left_on=None, right_on=None, left_index: bool = False, right_index: bool = False, sort: bool = False, suffixes=(’_x’, ‘_y’), copy: bool = True, indicator: bool = False, validate=None ) -
参数:
left:被链接的左表
right:被链接的右表
how:表的连接方式,类似sql。有{‘left’, ‘right’, ‘outer’, ‘inner’},四种,默认 inner
on:两个表进行连接的参照列,为默认值None时,
left_on:左侧表连接匹配列
right_on:右侧表连接匹配列
left_index:左侧表连接索引
right_index:右侧表连接索引
sort:对结果表进行排序
suffixes:对于两个表都有重复列,自动添加’_x’, '_y’后缀
indicator:在结果表中增加一列,用于显示数据来自哪个表中 -
创建DataFrame
import pandas as pd
df1 = pd.DataFrame({
"id":range(5),"姓名":list('abcde')})
df2 = pd.DataFrame({
"id":range(5),"成绩":[95,84,66,85,71]})
df3 = pd.DataFrame({
"id":[1,1,2,3,3,3,4,4,0],"成绩":[95,84,63,68,87,75,68,97,58]})
print(df1)
print(df2)
print(df3)
# 返回
id 姓名
0 0 a
1 1 b
2 2 c
3 3 d
4 4 e
id 成绩
0 0 95
1 1 84
2 2 66
3 3 85
4 4 71
id 成绩
0 1 95
1 1 84
2 2 63
3 3 68
4 3 87
5 3 75
6 4 68
7 4 97