如何根据索引合并两个 Pandas DataFrames?

pandaspythonserver side programmingprogramming

根据索引合并两个 Pandas DataFrames 在许多数据分析场景中都很有用。例如,您可能有两个具有不同特征或数据点的数据集,但都共享一个公共索引。在这种情况下,合并两个 DataFrames 可以帮助您以有意义的方式组合数据。

在本文中,我们将学习如何在 Python 中根据索引合并两个 Pandas DataFrames。我们将介绍合并过程中涉及的完整步骤,并通过代码示例说明每个步骤。

Pandas 中的 DataFrames 是什么?

Pandas 库中最重要的数据结构之一是 DataFrames。与电子表格、SQL 表或 Series 对象的字典类似,它是一个带标签的二维数据结构,其列可能具有不同类型的类型。它被广泛用于数据处理、数据清理和分析,是主要的 Pandas 数据结构。

DataFrame 由行和段组成,其中每个段可以具有替代信息类型(例如,int、float、string 等)。由于每行和每列都带有标签,因此可以轻松访问和操作数据。行名称被称为文件,而段标记被称为段。

在 Python 中合并 Pandas 中的两个数据框的步骤

步骤 1:导入模块

在 Python 中使用 Pandas 合并两个数据框的第一步是导入所需的模块,例如 pd。在此示例中,我们将使用 Pandas 进行数据处理和合并,并使用 NumPy 进行某些操作。以下是导入模块的语法 −

import pandas as pd
import numpy as np

步骤 2:创建示例数据框

下一步是创建一些示例数据框,然后使用 pandas 合并它们。为了举例说明,我们将创建两个包含随机数据的示例数据框,其中两个数据框具有相同的索引,但列不同。以下是创建示例数据框的语法 -

# 创建两个具有相同索引的 DataFrames
mydf1 = pd.DataFrame({'First': [10, 20, 30], 'Second': [40, 50, 60]}, index=['a', 'b', 'c'])
mydf2 = pd.DataFrame({'Third': [70, 80, 90], 'Four': [100, 110, 120]}, index=['a', 'b', 'c'])

步骤 3:基于索引合并

我们的下一步是合并索引上的两个 DataFrames,为此我们将使用带有 left_index 和right_index 参数设置为 True。这将确保根据 DataFrames 的索引完成合并。

# 根据索引合并 DataFrames
merged_df = pd.merge(df1, df2, left_index=True, right_index=True)
print(merged_df)

在上面合并的 DataFrame 中,我们可以看到两个 DataFrame 的列已经合并,并且数据点已经根据公共索引匹配。

步骤 4:合并具有不同索引的 DataFrames

如果两个 DataFrame 具有不同的索引,我们仍然可以使用 join() 函数根据索引合并它们。我们可以将 how 参数指定为 outer,以包含两个 DataFrames 中的所有行,并将 on 参数指定为 index,以在索引上合并。

# 创建两个具有相同索引的 DataFrames
mydf1 = pd.DataFrame({'First': [10, 20, 30], 'Second': [40, 50, 60]}, index=['a', 'b', 'c'])
mydf2 = pd.DataFrame({'Third': [70, 80, 90], 'Four': [100, 110, 120]}, index=['a', 'b', 'c'])

# 使用 join() 函数在索引上合并 DataFrames
mymerged_df = mydf1.join(mydf2)

#打印合并的 DataFrame
print(mymerged_df)

就这些了!现在,我们将看到一些基于索引使用不同方法合并两个 pandas 数据框的示例。

示例 1:使用 Merge() 函数

在给定的示例中,我们使用 merge() 函数在 Python 中合并索引上的两个数据框。在这里,我们创建了两个具有相同索引的 DataFrame mydf1 和 mydf2。然后我们使用 merge() 函数合并索引上的 DataFrame。合并两个数据框后,我们将生成的 DataFrame 保存为 mymerged_df,其中包含两个 DataFrame 的列,这些列基于它们的索引合并。

import pandas as pd

# 创建两个具有相同索引的 DataFrame
mydf1 = pd.DataFrame({'First': [10, 20, 30], 'Second': [40, 50, 60]}, index=['a', 'b', 'c'])
mydf2 = pd.DataFrame({'Third': [70, 80, 90], 'Four': [100, 110, 120]}, index=['a', 'b', 'c'])

# 使用 merge() 函数按索引合并 DataFrame
mymerged_df = pd.merge(mydf1, mydf2, left_index=True, right_index=True)

# 打印合并的 DataFrame
print(mymerged_df)

输出

   First  Second  Third  Four
a     10      40     70   100
b     20      50     80   110
c     30      60     90   120

示例 2:使用 Join() 函数

在给定的示例中,我们使用 join() 函数在 Python 中合并索引上的两个数据框。在这里,我们创建了两个具有不同索引的 DataFrames mydf1 和 mydf2。然后我们使用 join() 函数合并索引上的 DataFrames。合并两个数据框后,我们将生成的 DataFrame 保存为 mymerged_df,其中包含两个 DataFrames 的列,这些列根据它们的索引合并。但是,两个 DataFrame 中不存在的行对于缺失的列具有 NaN 值。

import pandas as pd

# 创建两个具有相同索引的 DataFrame
mydf1 = pd.DataFrame({'First': [10, 20, 30], 'Second': [40, 50, 60]}, index=['a', 'b', 'c'])
mydf2 = pd.DataFrame({'Third': [70, 80, 90], 'Four': [100, 110, 120]}, index=['a', 'b', 'c'])

# 使用 join() 函数按索引合并 DataFrame
mymerged_df = mydf1.join(mydf2)

# 打印合并的 DataFrame
print(mymerged_df)

输出

   First  Second  Third  Four
a     10      40     70   100
b     20      50     80   110
c     30      60     90   120

示例 3:使用 Concat() 函数

在给定的示例中,我们使用 concat() 函数在 Python 中合并索引上的两个数据框。在这里,我们使用 concat() 函数合并 DataFrames。通过指定 axis=1,我们水平连接 DataFrames,合并列。生成的 DataFrame mymerged_df 包含两个 DataFrame 的列,根据它们的索引进行合并。

示例

import pandas as pd

# 创建两个具有相同索引的 DataFrame
mydf1 = pd.DataFrame({'First': [10, 20, 30], 'Second': [40, 50, 60]}, index=['a', 'b', 'c'])
mydf2 = pd.DataFrame({'Third': [70, 80, 90], 'Four': [100, 110, 120]}, index=['a', 'b', 'c'])

# 使用 concat() 函数根据索引合并 DataFrame
mymerged_df = pd.concat([mydf1, mydf2], axis=1)

# 打印合并的 DataFrame
print(mymerged_df)

输出

   First  Second  Third  Four
a     10      40     70   100
b     20      50     80   110
c     30      60     90   120

结论

我们在本文中学习了如何根据索引合并两个 Panda 数据框。当两个数据集共享一个公共索引但具有不同的特征或数据点时,根据索引合并两个 Pandas DataFrames 可用于各种数据分析场景。使用诸如 merge() 和 join() 等各种函数,Pandas 库可以简单有效地合并 DataFrames。根据它们的索引,两个 DataFrames 的列将合并到最终的数据框中。DataFrames 是一种带有线和段的 2 层标记信息结构,其中每个部分可以具有替代信息类型,并且线和段都有名称。


相关文章