DataFrame.merge(right, 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) 源代码
通过按列或索引,执行数据库的连接操作来合并DataFrame
对象。
如果通过列连接列,则将忽略DataFrame
索引。否则,如果通过列或列上的索引或索引连接索引,则将传递索引。
参数: | right: DataFrame how:{‘left’, ‘right’, ‘outer’, ‘inner’},默认'inner' 1)left:仅使用左框架中的键,类似于SQL左外连接; 保留关键顺序 2)right:仅使用右框架中的键,类似于SQL右外连接; 保留关键顺序 3)outer:使用来自两个帧的键的并集,类似于SQL全外连接; 按字典顺序排序键 4)inner:使用两个帧的键交集,类似于SQL内连接; 保留左键的顺序 on:标签或列表 要加入的列或索引级别名称。这些必须在两个DataFrame中找到。 如果on为None且未合并索引,则默认为两个DataFrame中列的交集。 left_on:标签或列表,或类似数组 要在左侧DataFrame中连接的列级或索引级别名称。 也可以是左数据帧长度的数组或数组列表。这些数组被视为列。 right_on:标签或列表,或类似数组 要在右侧DataFrame中连接的列级或索引级别名称。 也可以是右侧DataFrame长度的数组或数组列表。这些数组被视为列。 left_index:布尔值,默认为False 使用左侧DataFrame中的索引作为连接键。如果是MultiIndex, 则其他DataFrame中的键数(索引或列数)必须与级别数相匹配 right_index:布尔值,默认为False 使用右侧DataFrame中的索引作为连接键。与left_index相同的说明 sort:布尔值,默认为False 在结果DataFrame中按字典顺序对连接键进行排序。如果为False, 则连接键的顺序取决于连接类型(关键字如何) suffixes:2长度序列(元组,列表,...) 后缀分别应用于左侧和右侧的重叠列名称 copy:boolean,默认为True 如果为False,则不要复制不必要地数据 indicator:布尔值或字符串,默认为False 如果为True,则添加一列以输出名为“_merge”的DataFrame, 其中包含每行源的信息。如果string,具有每行源的信息的列, 将被添加到输出DataFrame,并且列将被命名为string的值。 信息列为分类型,对于其合并键仅出现在“left”DataFrame中, 观察值为“left_only”,对于其合并键仅出现在“right”DataFrame中, 观察值为“right_only”,如果为获取合并密钥可以在两者中找到。 validate:string,默认无 如果指定,则检查merge是否为指定类型。 “one_to_one”或“1:1”:检查合并键是否在左右数据集中都是唯一的。 “one_to_many”或“1:m”:检查合并键在左数据集中是否唯一。 “many_to_one”或“m:1”:检查合并键在右侧数据集中是否唯一。 “many_to_many”或“m:m”:允许,但不会导致检查。 版本0.21.0中的新功能。 |
返回: | merged:DataFrame 如果输出类型是DataFrame的子类,则输出类型将与“left”相同。 |
版本0.23.0中添加了对指定索引级别的支持,即on,left_on和 right_on参数
例如,
>>> A >>> B
lkey value rkey value
0 foo 1 0 foo 5
1 bar 2 1 bar 6
2 baz 3 2 qux 7
3 foo 4 3 bar 8
>>> A.merge(B, left_on='lkey', right_on='rkey', how='outer')
lkey value_x rkey value_y
0 foo 1 foo 5
1 foo 4 foo 5
2 bar 2 bar 6
3 bar 2 bar 8
4 baz 3 NaN NaN
5 NaN NaN qux 7