Pandas DataFrame.merge()

2024 年 8 月 29 日 | 4 分钟阅读

Pandas merge() 被定义为将两个数据集合并成一个,并基于公共属性或列对齐行的过程。它是 DataFrame 对象之间所有标准数据库连接操作的入口点。

语法

参数

  • right: DataFrame 或具名 Series
    它是与 DataFrame 合并的对象。
  • how: {'left', 'right', 'outer', 'inner'}, 默认 'inner'
    要执行的合并类型。
    • left: 仅使用左侧框架的键,类似于 SQL 左外连接;保留键的顺序。
    • right: 仅使用右侧框架的键,类似于 SQL 右外连接;保留键的顺序。
    • outer: 使用来自两个框架的键的并集,类似于 SQL 全外连接;按字典顺序对键进行排序。
    • inner: 使用来自两个框架的键的交集,类似于 SQL 内连接;保留左侧键的顺序。
  • on: label 或 list
    它是要在其上连接的列或索引级别名称。它必须存在于左右两个 DataFrame 中。如果 on 为 None 并且不基于索引合并,则默认为两个 DataFrame 中列的交集。
    left_on: label 或 list, or array-like
    它是来自左侧 DataFrame 的列或索引级别名称,用作键。它可以是长度等于 DataFrame 长度的数组。
  • right_on: label 或 list, or array-like
    它是来自右侧 DataFrame 的列或索引级别名称,用作键。它可以是长度等于 DataFrame 长度的数组。
  • left_index : bool, 默认 False
    如果为 true,则使用左侧 DataFrame 的索引作为连接键。对于 MultiIndex(分层索引),另一个 DataFrame 中的许多键(索引或某些列)应与级别的数量匹配。
  • right_index : bool, 默认 False
    使用右侧 DataFrame 的索引作为连接键。它与 left_index 具有相同的用法。
  • sort: bool, 默认 False
    如果为 True,则在结果 DataFrame 中按字典顺序对连接键进行排序。否则,连接键的顺序取决于连接类型(how 关键字)。
  • suffixes: tuple of the (str, str), default ('_x', '_y')
    它是要分别应用于左右 DataFrame 中重叠的列名的后缀。列使用 (False, False) 值来引发关于重叠的异常。
  • copy: bool, 默认 True
    如果为 True,则返回 DataFrame 的副本。
    否则,它可以避免复制。
  • indicator: bool or str, 默认 False
    如果为 True,它会向输出 DataFrame 添加一个列 "_merge",其中包含关于每行来源的信息。 如果它是一个字符串,则将包含关于每行来源的信息的列添加到输出 DataFrame,并且该列将被命名为字符串的值。 信息列定义为类别类型,并采用以下值
    • "left_only" 用于合并键仅出现在 DataFrame 的 “left” 中的观测值,而
    • "right_only" 被定义为合并键仅出现在 DataFrame 的 “right” 中的观测值,
    • "both" 如果在两个 DataFrame 中都找到了观测的合并键。
  • validate: str, optional
    如果指定了它,它将检查下面给出的合并类型
    • "one_to_one" 或 "1:1": 它检查合并键在左右两个数据集中是否唯一。
    • "one_to_many" 或 "1:m": 它检查合并键是否仅在左侧数据集中唯一。
    • "many_to_one" 或 "m:1": 它检查合并键是否仅在右侧数据集中唯一。
    • "many_to_many" 或 "m:m": 它是允许的,但不进行检查。

示例 1:基于键合并两个 DataFrame

输出

    id      Name     subject_id

0   1       John        sub1
1   2       Parker      sub2
2   3       Smith       sub4
3   4       Parker      sub6

    id      Name     subject_id

0   1       William     sub2
1   2       Albert      sub4
2   3       Tony        sub3
3   4       Allen       sub6 

示例 2:基于多个键合并两个 DataFrame

输出

    id   Name_x    subject_id_x   Name_y     subject_id_y
0   1     John      sub1          William     sub2
1   2     Parker    sub2          Albert      sub4
2   3     Smith     sub4          Tony        sub3
3   4     Parker    sub6          Allen       sub6