函数的官方文档里就有写到 pd.merge() 的作用是用数据库样式的连接合并DataFrame或者已命名的Series;
- pd.merge(left, right, how='inner', on=None, left_on=None, right_on=None,
- left_index=False, right_index=False, sort=True,
- suffixes=('_x', '_y'), copy=True, indicator=False,
- validate=None)
参数解释:
left, right:
pd.merge() 只能用于两个表的拼接,连接方向是左右拼接,不能用于上下拼接;
如果需要拼接的两个表中,有相同的列信息,那么进行拼接的时候即使不指定以哪个字段作为主键函数也会默认用信息相同的列做主键对两个表进行拼接;
直接把一个表的名字传递给参数left,另一个表的名字传递给参数right就可以了;
pd.merge(df1,df2)
on:
这个参数确定哪个字段作为主键,上边提到如果有相同的列信息不指定主键也可以,这里使用on指定主键;
pd.merge(df1,df2,on="")
leftindex, rightindex:
除了指定字段作为主键以外,还可以考虑用索引作为拼接的主键,leftindex和rightindex默认为False,就是不以索引作为主键,调整为True就可以了
how:
控制拼接方式,默认内连接(inner)
外连接是保留两个表的所有信息,拼接的时候遇到标签不能对齐的部分,用NAN进行填充;
左连接是保留所有左表的信息,把右表中主键与左表一致的信息拼接进来,标签不能对齐的部分,用NAN进行填充;
右连接是保留所有右表的信息,把左表中主键与左表一致的信息拼接进来,标签不能对齐的部分,用NAN进行填充;
indicator:
在pd.concat()中可以通过参数设定显示拼接后的表中哪些信息来自于哪一个表格,在pd.merge()中也可以进行这样的操作,就是通过indicator参数设置,默认是False不显示数据来源,把参数设置为True就可以了。
这样在表的最后就会有一个新列,显示这一条记录来自于在哪表格里有数据,如果两表都有数据会标记both;
个人记录实验,详情参考:pandas数据合并之一文弄懂pd.merge() - 知乎 讲的很清楚!!