首页 >后端开发 >Python教程 >Pandas DataFrame 如何使用不同的连接类型进行合并?

Pandas DataFrame 如何使用不同的连接类型进行合并?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-12-27 13:17:11380浏览

How Do Pandas DataFrames Merge Using Different Join Types?

Pandas 合并 101

理解合并

合并根据共享密钥组合两个或多个 DataFrame 以创建新的 DataFrame 。 Pandas 提供各种类型的合并,包括 INNER、LEFT、RIGHT 和 FULL OUTER 连接。

基本联接类型

a。 INNER JOIN

  • 组合两个 DataFrame 中共享公共键的行。
  • 示例:

    left = pd.DataFrame({'key': ['A', 'B', 'C', 'D'], 'value': np.random.randn(4)})
    right = pd.DataFrame({'key': ['B', 'D', 'E', 'F'], 'value': np.random.randn(4)})
    left.merge(right, on='key')

b. LEFT OUTER JOIN

  • 保留左侧 DataFrame 中的所有行,为右侧 DataFrame 中缺少的键添加 NaN 值。
  • 示例:

    left.merge(right, on='key', how='left')

c. RIGHT OUTER JOIN

  • 保留右侧 DataFrame 中的所有行,为左侧 DataFrame 中缺少的键添加 NaN 值。
  • 示例:

    left.merge(right, on='key', how='right')

d. FULL OUTER JOIN

  • 组合两个 DataFrame 中的所有行,为缺少的键添加 NaN 值。
  • 示例:

    left.merge(right, on='key', how='outer')

排除数据左/右排除连接

如果您需要排除特定行,您可以通过首先执行左/右外部连接并过滤以排除特定行,从而执行左排除或右排除连接其他 DataFrame。

e。左排除 JOIN

  • 排除左侧 DataFrame 中存在的右侧 DataFrame 中的行。
  • 示例:

    (left.merge(right, on='key', how='left', indicator=True)
     .query('_merge == "left_only"')
     .drop('_merge', 1))

f.右排除 JOIN

  • 排除右 DataFrame 中存在的左 DataFrame 中的行。
  • 示例:

    (left.merge(right, on='key', how='right', indicator=True)
     .query('_merge == "right_only"')
     .drop('_merge', 1))

g。 ANTI JOIN

  • 合并两个 DataFrame 中都不存在的行。
  • 示例:

    (left.merge(right, on='key', how='outer', indicator=True)
     .query('_merge != "both"')
     .drop('_merge', 1))

处理重复密钥列

为了避免输出中出现重复的键列,您可以在合并之前设置适当的索引作为键:

left3 = left2.set_index('keyLeft')
left3.merge(right2, left_index=True, right_on='keyRight')

合并多个列

要连接多列,请指定 on 的列表(或 left_on 和 right_on,如

left.merge(right, on=['key1', 'key2'] ...)

附加合并函数

  • pd.merge_ordered:对于有序 JOIN。
  • pd.merge_asof:对于近似值连接。

有关更具体的示例和案例,请参阅有关合并、连接和连接的文档。

以上是Pandas DataFrame 如何使用不同的连接类型进行合并?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn