如何根据索引合并两个 Pandas DataFrames?
根据索引合并两个 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 层标记信息结构,其中每个部分可以具有替代信息类型,并且线和段都有名称。