使用merge()连接两个Pandas DataFrames

pandaspythonserver side programmingprogramming

使用merge()连接两个Pandas DataFrames:简介

Pandas是一个著名的Python数据处理包,它提供了多种数据结构来处理数据,包括Series和DataFrame。要根据共享列或索引合并两个或多个数据框,请使用Pandas的merge()函数。借助此函数,您可以修改连接过程并以多种方式组合数据框。本文将提供有关使用merge()函数合并两个Pandas数据框的详尽教程。

连接两个Pandas

定义

要根据共享列或索引合并两个或多个数据框,请使用Pandas的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, verify=None)
  • `left`− 一个数据框对象。

  • `right`− 另一个数据框对象。

  • `how`− 要执行的连接类型(内部、外部、左或

  • `on`− 用于连接数据框的列或索引名称。

  • `left_on`− 用于作为键的左侧数据框的列。

  • `right_on`− 用于作为键的右侧数据框的列。

  • `left_index` − 如果为 True,则使用左侧数据框的索引(行标签)作为连接键。

  • `right_index` − 如果为 True,则使用右侧数据框的索引(行标签)作为连接键。

  • `sort` − 按连接键对连接的数据框进行排序。默认为 False。

  • `suffixes` − 应用于重叠列名的后缀元组。

  • `copy` − 如果为 True,则创建一个新的数据框,而不是修改现有的数据框。

  • `indicator` − 向输出 DataFrame 添加一个名为"_merge"的列,其中包含有关每行来源的信息。

  • `validate` − 检查左右数据集中是否存在合并键。

算法

  • 步骤 1 − 添加 Pandas 库。

  • 步骤 2 − 应该有两个具有可比较列或索引的数据框创建。

  • 步骤 3 - 使用 merge() 方法指定连接条件。

  • 步骤 4 - 选择将使用的连接类型。

  • 步骤 5 - 使用 merge() 函数合并数据框,然后显示结果。

方法

  • 方法 1 - 使用共享列

  • 方法 2 - 使用共享索引

方法 1:使用共享列

利用共享列是利用 merge() 函数合并两个 Pandas 数据框的第一种方法。使用此方法,两个数据框基于共享列进行连接。假设我们有两个数据框"df1"和"df2",如下所示 -

示例

import pandas as pd

df1 = pd.DataFrame({
   'ID': ['001', '002', '003', '004'],
   'Name': ['John', 'Marry', 'Peter', 'Jack'],
   'Age': [21, 32, 25, 19],
   'Gender': ['Male', 'Female', 'Male', 'Male']
})

df2 = pd.DataFrame({
   'ID': ['002', '003', '005', '006'],
   'Salary': [55000, 65000, 75000, 85000],
   'Department': ['IT', 'Marketing', 'Sales', 'HR']
})
merged_df = pd.merge(df1, df2, on='ID', how='inner')
print(merged_df)

输出

    ID   Name   Age  Gender   Salary   Department
0  002  Marry   32   Female   55000         IT
1  003  Peter   25   Male     65000    Marketing

有关员工的信息包含在"df1"数据框中,而有关其薪酬和部门的详细信息包含在"df2"数据框中。为了根据 ID 列连接数据框,我们在此代码中提供"on"参数作为"ID"。为了执行内部连接,我们还将"how"参数指定为"inner",这意味着只有来自两个数据框且 ID 匹配的行才会添加到组合数据框中。只有来自两个数据框且 ID 匹配的行才会包含在此合并数据框中,该数据框还包括来自两个数据框的所有列。

方法 2:使用共享索引

利用公共索引是利用 merge() 函数合并两个 Pandas 数据框的第二种方法。使用此方法,两个数据框基于共享索引进行连接。假设我们有两个数据框"df1"和"df2",如下所示 -

示例

import pandas as pd

df1 = pd.DataFrame({
   'ID': ['001', '002', '003', '004'],
   'Name': ['John', 'Marry', 'Peter', 'Jack'],
   'Age': [21, 32, 25, 19],
   'Gender': ['Male', 'Female', 'Male', 'Male']
}, index=['a', 'b', 'c', 'd'])

df2 = pd.DataFrame({
   'Salary': [55000, 65000, 75000, 85000],
   'Department': ['IT', 'Marketing', 'Sales', 'HR']
}, index=['b', 'c', 'e', 'f'])
merged_df = pd.merge(df1, df2, left_index=True, right_index=True, how='inner')
print(merged_df)

输出

    ID   Name   Age  Gender   Salary  Department
b  002  Marry   32   Female   55000         IT
c  003  Peter   25    Male    65000   Marketing

此实例中的"df1"数据框包含有关员工的数据,但"df2"数据框包含有关其工资和部门的数据。"df1"数据框的索引为"['a', 'b', 'c', 'd']",而"df2"数据框的索引为"['b', 'c', 'e', 'f']"。为了根据索引合并数据框,我们将此代码中的"left_index"和"right_index"参数设置为"True"。为了执行内连接,我们还将"how"参数指定为"inner",这意味着只有两个数据框中具有匹配索引的行才会添加到组合数据框中。此合并的数据框包含两个数据框的所有列,以及两个数据框中索引匹配的行。

结论

本文介绍了如何使用merge()函数合并两个Pandas数据框。我们讨论了merge()函数的语法和参数,并提供了一个简单的5步策略来合并数据框。此外,我们还展示了如何使用两种不同的方法合并数据框:一种使用共享列,另一种使用共享索引。此外,我们还为这两种策略提供了完整的可执行代码示例,以及输出和深入的理由。在数据分析中,合并数据框是一项常见的活动,可以使用Pandas中的merge()方法来完成。通过使用merge()方法合并数据框,我们可以基于共享列或共享索引进行合并,并且可以选择进行内连接、外连接、左连接或右连接。

总体而言,任何使用Pandas的数据分析师或数据科学家都应该熟悉merge()函数的语法和功能,因为它是处理数据框的重要工具。通过使用merge()函数链接数据框的能力,我们可以对数据进行更复杂、更敏锐的分析,并从中得出更准确的结论。


相关文章