用法:
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)
使用 database-style 连接合并 DataFrame 或命名的 Series 对象。
命名的 Series 对象被视为具有单个命名列的 DataFrame。
连接是在列或索引上完成的。如果在列上连接列,则 DataFrame 索引将被忽略。否则,如果加入索引上的索引或列上的索引,则索引将被传递。执行交叉合并时,不允许合并列规范。
警告
如果两个键列都包含键为空值的行,则这些行将相互匹配。这与通常的 SQL 连接行为不同,并可能导致意外结果。
- right:DataFrame 或命名系列
要合并的对象。
- how:{‘left’, ‘right’, ‘outer’, ‘inner’, ‘cross’},默认 ‘inner’
要执行的合并类型。
left:仅使用左帧中的键,类似于 SQL 左外连接;保留 key 顺序。
右:仅使用右框架中的键,类似于 SQL 右外连接;保留 key 顺序。
外部:使用来自两个帧的键并集,类似于 SQL 完全外部联接;按字典顺序对键进行排序。
内部:使用来自两个帧的键的交集,类似于 SQL 内部连接;保留左键的顺序。
cross:从两个帧创建笛卡尔积,保留左键的顺序。
- on:标签或列表
要加入的列或索引级别名称。这些必须在两个 DataFrame 中都可以找到。如果
on
为 None 并且不合并索引,则默认为两个 DataFrame 中列的交集。- left_on:标签或列表,或array-like
要在左侧 DataFrame 中加入的列或索引级别名称。也可以是左侧DataFrame长度的数组或数组列表。这些数组被视为列。
- right_on:标签或列表,或array-like
要在右侧 DataFrame 中加入的列或索引级别名称。也可以是正确DataFrame长度的数组或数组列表。这些数组被视为列。
- left_index:布尔值,默认为 False
使用左侧 DataFrame 中的索引作为连接键。如果是 MultiIndex,则另一个 DataFrame 中的键数(索引或列数)必须与级别数匹配。
- right_index:布尔值,默认为 False
使用右侧 DataFrame 中的索引作为连接键。与left_index 相同的注意事项。
- sort:布尔值,默认为 False
在结果 DataFrame 中按字典顺序对连接键进行排序。如果为 False,则连接键的顺序取决于连接类型(how 关键字)。
- suffixes:list-like,默认为 (“_x”, “_y”)
长度为 2 的序列,其中每个元素可选地是一个字符串,指示要分别添加到
left
和right
中的重叠列名称的后缀。传递None
的值而不是字符串,以指示来自left
或right
的列名应保留为 as-is,不带后缀。至少其中一个值不得为无。- copy:布尔值,默认为真
如果为 False,请尽可能避免复制。
- indicator:bool 或 str,默认为 False
如果为 True,则在输出 DataFrame 中添加一个名为 “_merge” 的列,其中包含有关每行来源的信息。通过提供字符串参数,可以为该列指定不同的名称。该列将有一个分类类型,其值为 “left_only” 用于合并键仅出现在左侧 DataFrame 中的观察,“right_only” 用于其合并键仅出现在右侧 DataFrame 中的观察,以及 “both” 如果观察的合并键在两个 DataFrame 中都可以找到。
- validate:str,可选
如果指定,则检查合并是否属于指定类型。
“one_to_one” 或 “1:1”:检查合并键在左右数据集中是否唯一。
“one_to_many” 或 “1:m”:检查合并键在左侧数据集中是否唯一。
“many_to_one” 或 “m:1”:检查合并键在正确的数据集中是否唯一。
“many_to_many” 或 “m:m”:允许,但不会导致检查。
- DataFrame
两个合并对象的 DataFrame。
参数:
返回:
注意:
支持将索引级别指定为
on
、left_on
和right_on
参数在 0.23.0 版中添加 对合并命名系列对象的支持在 0.24.0 版中添加例子:
>>> df1 = pd.DataFrame({'lkey':['foo', 'bar', 'baz', 'foo'], ... 'value':[1, 2, 3, 5]}) >>> df2 = pd.DataFrame({'rkey':['foo', 'bar', 'baz', 'foo'], ... 'value':[5, 6, 7, 8]}) >>> df1 lkey value 0 foo 1 1 bar 2 2 baz 3 3 foo 5 >>> df2 rkey value 0 foo 5 1 bar 6 2 baz 7 3 foo 8
在 lkey 和 rkey 列上合并 df1 和 df2。值列附加了默认后缀 _x 和 _y。
>>> df1.merge(df2, left_on='lkey', right_on='rkey') lkey value_x rkey value_y 0 foo 1 foo 5 1 foo 1 foo 8 2 foo 5 foo 5 3 foo 5 foo 8 4 bar 2 bar 6 5 baz 3 baz 7
合并 DataFrames df1 和 df2,并在任何重叠列上附加指定的左右后缀。
>>> df1.merge(df2, left_on='lkey', right_on='rkey', ... suffixes=('_left', '_right')) lkey value_left rkey value_right 0 foo 1 foo 5 1 foo 1 foo 8 2 foo 5 foo 5 3 foo 5 foo 8 4 bar 2 bar 6 5 baz 3 baz 7
合并 DataFrames df1 和 df2,但如果 DataFrames 有任何重叠列,则会引发异常。
>>> df1.merge(df2, left_on='lkey', right_on='rkey', suffixes=(False, False)) Traceback (most recent call last): ... ValueError:columns overlap but no suffix specified: Index(['value'], dtype='object')
>>> df1 = pd.DataFrame({'a':['foo', 'bar'], 'b':[1, 2]}) >>> df2 = pd.DataFrame({'a':['foo', 'baz'], 'c':[3, 4]}) >>> df1 a b 0 foo 1 1 bar 2 >>> df2 a c 0 foo 3 1 baz 4
>>> df1.merge(df2, how='inner', on='a') a b c 0 foo 1 3
>>> df1.merge(df2, how='left', on='a') a b c 0 foo 1 3.0 1 bar 2 NaN
>>> df1 = pd.DataFrame({'left':['foo', 'bar']}) >>> df2 = pd.DataFrame({'right':[7, 8]}) >>> df1 left 0 foo 1 bar >>> df2 right 0 7 1 8
>>> df1.merge(df2, how='cross') left right 0 foo 7 1 foo 8 2 bar 7 3 bar 8
相关用法
- Python pandas.DataFrame.melt用法及代码示例
- Python pandas.DataFrame.memory_usage用法及代码示例
- Python pandas.DataFrame.mod用法及代码示例
- Python pandas.DataFrame.mask用法及代码示例
- Python pandas.DataFrame.mul用法及代码示例
- Python pandas.DataFrame.multiply用法及代码示例
- Python pandas.DataFrame.max用法及代码示例
- Python pandas.DataFrame.mode用法及代码示例
- Python pandas.DataFrame.min用法及代码示例
- Python pandas.DataFrame.ewm用法及代码示例
- Python pandas.DataFrame.dot用法及代码示例
- Python pandas.DataFrame.apply用法及代码示例
- Python pandas.DataFrame.combine_first用法及代码示例
- Python pandas.DataFrame.cumsum用法及代码示例
- Python pandas.DataFrame.rename用法及代码示例
- Python pandas.DataFrame.to_numpy用法及代码示例
- Python pandas.DataFrame.dtypes用法及代码示例
- Python pandas.DataFrame.cummin用法及代码示例
- Python pandas.DataFrame.truncate用法及代码示例
- Python pandas.DataFrame.sparse.from_spmatrix用法及代码示例
注:本文由纯净天空筛选整理自pandas.pydata.org大神的英文原创作品 pandas.DataFrame.merge。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。