pd.merge()的作用是用数据库样式的连接合并DataFrame或者已命名的Series。
pd.merge( x,y, how='inner', on=None, left_on=None, right_on=None, left_index=False, right_index=False, sort=False, suffixes=('_x', '_y'), copy=True, indicator=False, validate=None)
参数说明:
x:左数据对象。
y:右数据对象。
how:数据对象连接的方式,inner、outer、left、right。
left_on:左数据对象用于连接的键。
right_on:右数据对象用于连接的键。
参数how定义了四种合并方式:
(1)inner:内连接,连接两个数据对象中键值交集的行,其余忽略。
(2)outer:外连接,连接两个数据对象中键值并集的列。
(3)left:左连接,取出x的全部行,连接y中匹配的键值行。
(4)right:右连接,取出y的全部行,连接x中匹配的键值行。
使用第(1)种方式合并时,没有匹配到时,将会丢失。
使用第(2)、(3)、(4)种方式合并,当某列数据不存在时自动填充NaN。
和pd.concat()不同,pd.merge()只能用于两个表的拼接,而且通过参数名称也能看出连接方向是左右拼接,一个左表一个右表,而且参数中没有指定拼接轴的参数,所以pd.merge()不能用于表的上下拼接。如果需要拼接的两个表中,有相同的列信息,那么进行拼接的时候即使不指定以哪个字段作为主键函数也会默认用信息相同的列做主键对两个表进行拼接,如下例:
下面给参数on一值来指定主键,看一下结果是怎样的
由于两个对象中均有“序号”与“性别”,我们以“序号”为主键,这时“性别”便重复留下了,针对这种问题,我们可以给予两个主键