详解Pandas merge合并操作的4种方法

pandas 中的 merge 函数可以将两个数据集按照指定的列进行合并,类似于 SQL 中的 join 操作。merge 函数有多种合并方式,包括 inner join、left join、right join 和 outer join 等。

下面我们就来详细介绍一下 merge 函数的使用方法。

数据准备

我们首先准备两个数据集,一个是包含员工基本信息的数据集,另一个是包含员工工资信息的数据集。它们的数据结构如下:

# 创建员工基本信息数据集
employee_info = pd.DataFrame({
    'employee_id': ['001', '002', '003', '004'],
    'name': ['张三', '李四', '王五', '赵六'],
    'age': [28, 32, 24, 36],
    'gender': ['M', 'M', 'F', 'M'],
    'city': ['Beijing', 'Shanghai', 'Guangzhou', 'Shenzhen']
})

# 创建员工工资信息数据集
employee_salary = pd.DataFrame({
    'employee_id': ['001', '002', '004', '005'],
    'salary': [8000, 9000, 7000, 7500],
    'tax': [800, 900, 700, 750]
})

其中 employee_info 包含了每个员工的基本信息,employee_salary 包含了每个员工的工资信息。这两个数据集之间的连接键是 employee_id。

Inner Join

Inner join 是指按照连接键对两个数据集进行合并,保留两个数据集中都包含的记录。使用 merge 函数实现 inner join 的代码如下:

# 将两个数据集按照 employee_id 列进行 inner join
inner_join = pd.merge(employee_info, employee_salary, on='employee_id', how='inner')
print(inner_join)

输出结果如下:

  employee_id name  age gender       city  salary  tax
0         001   张三   28      M    Beijing    8000  800
1         002   李四   32      M   Shanghai    9000  900
2         004   赵六   36      M   Shenzhen    7000  700

可以看到,inner join 只保留了两个数据集中都包含的员工信息,即 employee_id 为 001、002 和 004 的员工信息。

Left Join

Left join 是指按照连接键对两个数据集进行合并,保留左侧数据集中所有记录,并将右侧数据集中匹配到的记录合并到左侧数据集中。使用 merge 函数实现 left join 的代码如下:

# 将两个数据集按照 employee_id 列进行 left join
left_join = pd.merge(employee_info, employee_salary, on='employee_id', how='left')
print(left_join)

输出结果如下:

  employee_id name  age gender       city  salary    tax
0         001   张三   28      M    Beijing  8000.0  800.0
1         002   李四   32      M   Shanghai  9000.0  900.0
2         003   王五   24      F  Guangzhou     NaN    NaN
3         004   赵六   36      M   Shenzhen  7000.0  700.0

可以看到,left join 保留了左侧数据集(即 employee_info)中所有的记录,并将右侧数据集(即 employee_salary)中匹配到的记录合并到了左侧数据集中。注意到这里有一条员工记录(即 employee_id 为 003 的员工)在右侧数据集中没有对应的记录,因此在合并结果中该记录的工资信息被设置为 NaN。

Right Join

Right join 是指按照连接键对两个数据集进行合并,保留右侧数据集中所有记录,并将左侧数据集中匹配到的记录合并到右侧数据集中。使用 merge 函数实现 right join 的代码如下:

# 将两个数据集按照 employee_id 列进行 right join
right_join = pd.merge(employee_info, employee_salary, on='employee_id', how='right')
print(right_join)

输出结果如下:

  employee_id name   age gender       city  salary  tax
0         001   张三  28.0      M    Beijing    8000  800
1         002   李四  32.0      M   Shanghai    9000  900
2         004   赵六  36.0      M   Shenzhen    7000  700
3         005  NaN   NaN    NaN        NaN    7500  750

Outer Join

Outer join 是指按照连接键对两个数据集进行合并,保留左右两个数据集中所有记录,并将能够匹配到的记录合并到一起。使用 merge 函数实现 outer join 的代码如下:

# 将两个数据集按照 employee_id 列进行 outer join
outer_join = pd.merge(employee_info, employee_salary, on='employee_id', how='outer')
print(outer_join)

输出结果如下:

  employee_id name   age gender       city  salary    tax
0         001   张三  28.0      M    Beijing  8000.0  800.0
1         002   李四  32.0      M   Shanghai  9000.0  900.0
2         003   王五  24.0      F  Guangzhou     NaN    NaN
3         004   赵六  36.0      M   Shenzhen  7000.0  700.0
4         005  NaN   NaN    NaN        NaN  7500.0  750.0

以上代码中,outer join 保留了左右两个数据集中所有的记录,并将能够匹配到的记录合并到一起。注意到这里有一条员工记录(即 employee_id 为 003 的员工)在右侧数据集中没有对应的记录,同时有一条工资记录(即 employee_id 为 005 的员工)在左侧数据集中没有对应的记录,因此在合并结果中这两条记录都被保留,缺失的值被填充为 NaN。

总结

总结一下,pandas 提供了四种常见的合并方式:inner join、left join、right join 和 outer join。

其中,inner join 只保留能够匹配到的记录,left join 保留左侧数据集中所有的记录并将右侧数据集中匹配到的记录合并到左侧数据集中,right join 保留右侧数据集中所有的记录并将左侧数据集中匹配到的记录合并到右侧数据集中,outer join 则保留左右两个数据集中所有的记录并将能够匹配到的记录合并到一起。

在实际的数据处理中,选择不同的合并方式可以帮助我们更好地理解和分析数据。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解Pandas merge合并操作的4种方法 - Python技术站

(2)
上一篇 2023年3月5日
下一篇 2023年3月5日

相关文章

  • 选择除了Pandas数据框架中的一个给定列之外的所有列

    如果想要选择除了 Pandas 数据框架中的一个给定列之外的所有列,可以使用 Pandas 中的 .loc 或 .iloc 方法。 下面是一个示例数据框: import pandas as pd data = {‘Name’: [‘John’, ‘Lisa’, ‘Chris’, ‘Jenny’, ‘Tom’], ‘Age’: [24, 31, 45, 19,…

    python-answer 2023年3月27日
    00
  • python数据可视化Seaborn绘制山脊图

    当我们需要理解连续变量的分布并希望更好地探索其波动性和异常值时,使用Seaborn绘制山脊图是一种非常好的选择。下面是该技术的详细攻略: 一、什么是山脊图? 山脊图也被称为密度曲线图,它是一种连续的估计曲线,可以描述数据的分布和密度。山脊图可以方便地查看数据的中心、形状和离群值的存在。在Python中,我们可以使用Seaborn库绘制山脊图。 二、如何使用S…

    python 2023年6月13日
    00
  • 利用pandas进行大文件计数处理的方法

    当我们需要处理大文件时,使用Python自带的file I/O函数对于计数处理来说显然是低效的。幸运的是,Python中有一个流行的数据分析库 – pandas,它能够帮助我们更高效地处理大文件。 以下是处理大文件计数的步骤: 第一步:导入必要的库 导入pandas库和numpy库,代码如下: import pandas as pd import numpy…

    python 2023年5月14日
    00
  • Python数据分析模块pandas用法详解

    Python数据分析模块pandas用法详解 1. pandas概述 pandas是一个Python的第三方库,主要用于数据分析和数据处理。它提供了高效的数据结构与数据分析工具,被广泛应用于数据挖掘、数据分析、数据预处理等各个领域。pandas的核心数据结构是DataFrame和Series,DataFrame是二维的表格结构,而Series是一维的数组结构…

    python 2023年5月14日
    00
  • 在Pandas数据框架中用零替换NaN值

    在Pandas数据框架中,NaN(Not a Number)值通常表示缺少数据或无效数据,需要使用一些方法来进行填充。本文将介绍如何在Pandas数据框架中用零替换NaN值。 步骤一:创建数据框架 首先,让我们创建一个简单的数据框架。在这个例子中,我们将使用一个包含NaN值的数据框架: import pandas as pd import numpy as …

    python-answer 2023年3月27日
    00
  • 在Python中向现有的Pandas DataFrame添加字典和系列的列表

    在Python中,可以使用Pandas来创建和操作数据帧(DataFrame),在实际的数据处理过程中,需要向现有的DataFrame添加字典和系列的列表,在此,提供以下完整攻略及实例说明。 向Pandas DataFrame添加字典 在Pandas中,可以使用append()方法向Dataframe中添加字典,示例如下: import pandas as …

    python-answer 2023年3月27日
    00
  • Python读写txt文本文件的操作方法全解析

    下面针对“Python读写txt文本文件的操作方法全解析”的攻略进行详细讲解。 1. 读取txt文件 Python读取txt文件可以使用Python的内置函数open(),此函数可以返回一个文件对象。 # 打开文件方式一 f = open(‘filename.txt’, ‘r’) # 打开文件方式二 with open(‘filename.txt’, ‘r’…

    python 2023年5月14日
    00
  • 修改Pandas的行或列的名字(重命名)

    修改Pandas的行或列的名字,又称为重命名,是数据处理中常用的基本操作。下面是修改Pandas的行或列名字的攻略。 一、使用rename方法 Pandas的DataFrame和Series都有rename方法,可以用来重命名行或列。其中,DataFrame的rename方法可以同时重命名行和列。 语法: DataFrame.rename(mapper=No…

    python 2023年5月14日
    00
合作推广
合作推广
分享本页
返回顶部