详解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中的数据去重方法 pandas中的数据去重方法主要有两个函数来实现,分别是drop_duplicates()和duplicated()。接下来我们将一一介绍这两个函数的使用方法。 1.1 duplicated() duplicated()函数可以帮助我们查看DataFrame或S…

    python 2023年5月14日
    00
  • 在Pandas中确定DataFrame的周期索引和列

    确定DataFrame的周期索引和列是Pandas中重要的操作之一,可以帮助我们更好地处理时间序列数据。下面是详细的攻略和实例说明: 确定周期索引 在Pandas中,我们可以使用PeriodIndex对象来创建一个周期性索引。其中,PeriodIndex对象可以接受的参数主要有以下三种: freq:指定周期的频率,以字符串的形式传入,常见的有’D’,’H’,…

    python-answer 2023年3月27日
    00
  • 用Pandas计算每组的唯一值

    首先,使用Pandas计算每组的唯一值,可以通过Pandas的groupby()方法来实现。这个方法可以按照多个列或者一个列进行分组,并对每个组进行计算。下面是关于如何使用groupby()方法获取每组唯一值的攻略: 步骤一:导入所需库 这个问题中需要使用Pandas库,因此需要先导入Pandas库。可以使用以下代码进行导入: import pandas a…

    python-answer 2023年3月27日
    00
  • Pandas – 如何洗牌DataFrame的行数

    Pandas是Python中一个强大的数据分析库,而数据分析中常常需要对数据进行洗牌操作,也就是要对数据的行或列进行随机重排。本文将为大家详细讲解如何使用Pandas对DataFrame的行数进行洗牌,包括以下几个方面: 洗牌DataFrame的行数的原理 Pandas中洗牌DataFrame的行数的方法 代码示例及结果说明 洗牌DataFrame的行数的原…

    python-answer 2023年3月27日
    00
  • 使用Python预测空气质量指数

    Title: 使用Python预测空气质量指数 空气质量指数(AQI)是衡量空气质量好坏的标准之一,预测空气质量指数是对环境保护的重要工作之一。Python是一种强大的编程语言,能够较方便地处理数据集,因此在预测AQI方面也有很大的应用。 数据获取 首先,我们需要获得空气质量数据集。可在国家环境保护部门网站上获取,也可通过第三方数据提供商获得。这里我们以UC…

    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 pandas.replace的用法详解

    Python pandas.replace的用法详解 pandas.replace()是pandas库中重要的函数之一,用于数据的替换或者重命名,接下来详细讲解此函数的用法及其应用场景。 基本语法 DataFrame.replace(to_replace=None, value=None, inplace=False, limit=None, regex=F…

    python 2023年5月14日
    00
  • pandas apply多线程实现代码

    下面我将详细讲解如何使用Pandas的apply方法实现多线程代码。 1. 多线程原理 在单线程模型中,代码的执行是按照先后顺序逐个执行。而在多线程模型中,代码的执行可以同时进行多个线程的处理,从而提高代码运行效率。 在Python中实现多线程时,推荐使用threading库。 2. Pandas.apply方法 Pandas是Python中最流行的数据处理…

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