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: how: 1) 2) 3) 4) on:标签或列表 要加入的列或索引级别名称。这些必须在两个 如果on为None且未合并索引,则默认为两个 left_on:标签或列表,或类似数组 要在左侧 也可以是左数据帧长度的数组或数组列表。这些数组被视为列。 right_on:标签或列表,或类似数组 要在右侧DataFrame中连接的列级或索引级别名称。 也可以是右侧DataFrame长度的数组或数组列表。这些数组被视为列。 left_index:布尔值,默认为 使用左侧DataFrame中的索引作为连接键。如果是MultiIndex, 则其他DataFrame中的键数(索引或列数)必须与级别数相匹配 right_index:布尔值,默认为False 使用右侧DataFrame中的索引作为连接键。与 sort:布尔值,默认为 在结果DataFrame中按字典顺序对连接键进行排序。如果为 则连接键的顺序取决于连接类型(关键字如何) suffixes:2长度序列(元组,列表,...) 后缀分别应用于左侧和右侧的重叠列名称 copy:布尔值,默认为 如果为False,则不要复制不必要地数据 indicator:布尔值或字符串,默认为 如果为True,则添加一列以输出名为“_merge”的 其中包含每行源的信息。如果 将被添加到输出 信息列为分类型,对于其合并键仅出现在 观察值为 观察值为 validate: 如果指定,则检查 “one_to_one”或“1:1”:检查合并键是否在左右数据集中都是唯一的。 “one_to_many”或“1:m”:检查合并键在左数据集中是否唯一。 “many_to_one”或“m:1”:检查合并键在右侧数据集中是否唯一。 “many_to_many”或“m:m”:允许,但不会导致检查。 版本0.21.0中的新功能。 |
返回: | merged: 如果输出类型是 则输出类型将与 |
版本0.23.0中添加了对指定索引级别的支持,即on
,left_on
和 right_on参数
例如,
import pandas as pd
# 创建 DataFrame A
A = pd.DataFrame({'lkey': ['foo', 'bar', 'baz', 'foo'],
'value': [1, 2, 3, 4]})
# 创建 DataFrame B
B = pd.DataFrame({'rkey': ['foo', 'bar', 'qux'],
'value': [5, 6, 7]})
# 使用 merge 方法,按照 'lkey' 和 'rkey' 列进行外连接
result = A.merge(B, left_on='lkey', right_on='rkey', how='outer')
print(result)
'''
lkey value_x rkey value_y
0 foo 1.0 foo 5.0
1 foo 4.0 foo 5.0
2 bar 2.0 bar 6.0
3 baz 3.0 NaN NaN
4 NaN NaN qux 7.0
'''