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

yizhihongxing

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的groupby函数和循环迭代的方式进行操作。 具体步骤如下: 1.首先导入需要使用的库和数据集 import pandas as pd import numpy as np # 导入数据集,本例使用Iris数据集 iris = pd.read_csv(‘https://archive.ic…

    python-answer 2023年3月27日
    00
  • 如何漂亮地打印整个Pandas系列或数据框架

    要在Python中漂亮地打印整个Pandas系列或数据框架,可以使用Pandas的样式功能。Pandas样式功能允许你样式化、高亮甚至添加条件格式到数据框架,以使其更易于阅读和理解。 以下是漂亮地打印整个Pandas数据框架的完整攻略: 导入所需的库 import pandas as pdfrom IPython.display import display…

    python-answer 2023年3月27日
    00
  • Python Pandas – 将PeriodIndex对象转换为Timestamp并设置频率

    来讲解一下Python Pandas中如何将PeriodIndex对象转换为Timestamp并设置频率。 1. 什么是PeriodIndex对象 在了解如何将PeriodIndex对象转换为Timestamp并设置频率之前,我们先来介绍一下什么是PeriodIndex对象。 PeriodIndex对象是一种表示时间段(period)的数据结构。它由一组具有…

    python-answer 2023年3月27日
    00
  • 如何在Pandas数据框架中添加标题行

    要在pandas数据框架中添加标题行(也被称为列名),可以按照以下步骤操作: 1.首先创建一个数据框架。可以使用以下代码创建一个数据框架: import pandas as pd df = pd.DataFrame({‘col1’:[1, 2, 3], ‘col2’:[4, 5, 6], ‘col3’:[7, 8, 9]}) print(df) 输出: co…

    python-answer 2023年3月27日
    00
  • Python 绘图和可视化详细介绍

    Python 绘图和可视化详细介绍 为什么需要数据可视化 在数据分析和探索的过程中,很多时候我们需要将数据可视化来更好地理解数据,发现数据的特点和规律。数据可视化让复杂的数据变得更加易懂和易于交流,能够支持更好的数据驱动决策。 绘图和可视化库 Python中有多个绘图和可视化库,其中较为流行的包括: matplotlib:基础图形库,支持折线图、散点图、柱状…

    python 2023年6月13日
    00
  • 在Pandas数据框架中对数值进行四舍五入的方法

    在Pandas数据框架中对数值进行四舍五入可以使用round()方法。该方法用于对数据框架中数值进行准确的四舍五入。 例如,我们有一个如下的数据框架: import pandas as pd # 创建一个数据框架 df = pd.DataFrame({ ‘名称’: [‘苹果’, ‘橘子’, ‘香蕉’, ‘菠萝’], ‘价格’: [3.14159, 1.234…

    python-answer 2023年3月27日
    00
  • 介绍Python中的文档测试模块

    下面我来详细讲解一下Python中文档测试模块的使用方法和攻略。 什么是文档测试模块? 文档测试模块是Python标准库中的一个模块,它提供了一种在Python docstrings中嵌入测试代码的方式,可以帮助开发者编写出拥有高质量和可靠性的代码和文档。 使用方法 首先,我们需要了解一下docstring和测试用例的概念。 Docstring docstr…

    python 2023年5月14日
    00
  • 如何在 Python 中使用 cbind

    首先,需要说明一下,cbind是R语言中用于将两个或多个对象按列进行拼接的函数,而在Python中,可以使用NumPy库中的numpy.c_函数来实现同样的功能。 下面,就来详细讲解如何在Python中使用numpy.c_函数进行cbind操作。 1. 导入NumPy库 在进行cbind操作之前,需要先导入NumPy库,可以使用以下代码实现导入: impor…

    python-answer 2023年3月27日
    00
合作推广
合作推广
分享本页
返回顶部