pandas中merge()函数的用法解读

  • Post category:Python

pandas中merge()函数的用法解读

什么是merge?

merge函数是pandas库中常用的数据合并函数,它可以根据一个或多个键(列名)将不同数据集中的行连接起来。merge操作类似于SQL中的join操作。

merge()函数的语法

pandas.merge(left, 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)
  • left,左侧合并的DataFrame。

  • right,右侧合并的DataFrame。

  • how,合并方式。有inner、outer、left、right四种情况可选。默认inner。

    • inner:取两表共同拥有的,并集合并成一表。
    • outer:并集合并成一表。
    • left:以左表为准,右表中没有的部分填0或NaN
    • right:以右表为准,左表中没有的部分填0或NaN
  • on,指明参与合并的列名,必须存在于两张DataFrame中。

  • left_on,左表中用于合并的列名。

  • right_on,右表中用于合并的列名。

  • left_index,是否将左表的行索引作为合并键。默认False。

  • right_index,是否将右表的行索引作为合并键。默认False。

  • sort,根据合并键按字典顺序排序。默认False。

  • suffixes,指定待合并表中具有相同列名的列的后缀。默认为(‘_x’,’_y’)。

  • copy,默认True,只要为false,尝试在某些情况下避免完全复制数据。

  • indicator,给合并后的DataFrame添加一列,显示每一行的来源表。可选值为:

    • False,不添加合并指示列。
    • True,添加合并指示列,默认合并指示列为_merge,值为left, right或both。
    • str,指定合并指示列的名称。
  • validate,验证合并方式有效的值。应设为None(默认),no_check(不验证)或one_to_one(检查是否一对一连接)等。

merge()函数示例

以下示例均以如下两张表为基础:

import pandas as pd

# 创建左表
left = pd.DataFrame({'key1': ['K0', 'K1', 'K2', 'K3'],
                     'key2': ['K0', 'K1', 'K0', 'K1'],
                     'A': ['A0', 'A1', 'A2', 'A3'],
                     'B': ['B0', 'B1', 'B2', 'B3']})

# 创建右表
right = pd.DataFrame({'key1': ['K0', 'K1', 'K2', 'K3'],
                      'key2': ['K0', 'K0', 'K0', 'K1'],
                      'C': ['C0', 'C1', 'C2', 'C3'],
                      'D': ['D0', 'D1', 'D2', 'D3']})

示例一:内连接(inner join)

内连接,顾名思义,只返回左右DataFrame键列共有的部分,可以用how参数设置,默认为inner join。

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

# 输出结果
print(result)

结果如下:

  key1 key2   A   B   C   D
0   K0   K0  A0  B0  C0  D0
1   K1   K0  A1  B1  C1  D1

示例二:外连接(outer join)

外连接即保留左右两边全部的数据,并将结果取并集。在形式上,只要一个表中没有与另一个表中某行相对应的数据,全部都用NaN填充。

result = pd.merge(left, right, on=['key1', 'key2'], how='outer')

# 输出结果
print(result)

结果如下:

  key1 key2    A    B    C    D
0   K0   K0   A0   B0   C0   D0
1   K1   K0   A1   B1   C1   D1
2   K2   K0   A2   B2   C2   D2
3   K3   K1   A3   B3  NaN  NaN
4   K2   K0  NaN  NaN   C2   D2
5   K3   K0  NaN  NaN   C3   D3

以上就是merge()函数的用法解读,相信你已经理解了。