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

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

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

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

Pandas中的DataFrames是什么

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

DataFrame由行和列组成,其中每个部分可以具有不同的数据类型(例如整数、浮点数、字符串等)。由于每行和每列都有标签,所以可以轻松地访问和操作数据。行标签称为索引,列标签称为列。

在Python中合并两个DataFrames的步骤

步骤1:导入模块

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

import pandas as pd
import numpy as np

步骤2:创建样本数据框

下一步是使用pandas创建一些样本数据框,并将它们合并。对于这个示例,我们将创建两个带有随机数据的样本数据框,这两个数据框的索引相同,但列不同。以下是创建样本数据框的语法:

# Creating two DataFrames having the same index
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:根据索引合并

我们的下一步是在索引上合并这两个DataFrame,为此我们将使用merge()函数,并将left_index和right_index参数设置为True。这样可以确保合并是基于DataFrame的索引进行的。

# Merge DataFrames on index
merged_df = pd.merge(df1, df2, left_index=True, right_index=True)
print(merged_df)

在上述合并的DataFrame中,可以看到来自两个DataFrame的列已经被合并,数据点是基于共同的索引匹配的。

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

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

# Creating two DataFrames having the same index
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'])

# Merging the DataFrames on index using join() function
mymerged_df = mydf1.join(mydf2)

# Print the merged DataFrame
print(mymerged_df)

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

示例1:使用Merge()函数

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

import pandas as pd

# Creating two DataFrames having the same index
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'])

# Merging the DataFrames on index using merge() function
mymerged_df = pd.merge(mydf1, mydf2, left_index=True, right_index=True)

# Print the merged 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中合并两个DataFrame的索引。在此示例中,我们创建了两个具有不同索引的DataFrame mydf1和mydf2。然后,我们使用join()函数根据它们的索引合并DataFrame。合并两个数据帧后,我们将结果DataFrame保存为mymerged_df,其中包含来自两个DataFrame的列,根据它们的索引进行了合并。然而,在两个DataFrame中都不存在的行的列被缺失值NaN填充。

import pandas as pd

# Creating two DataFrames having the same index
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'])

# Merging the DataFrames on index using join() function
mymerged_df = mydf1.join(mydf2)

# Print the merged 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()函数合并数据帧。通过指定axis=1,我们水平连接了数据帧,即将列进行了合并。结果数据帧mymerged_df包含了来自两个数据帧的列,基于它们的索引进行了合并。

示例

import pandas as pd

# Creating two DataFrames having the same index
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'])

# Merging the DataFrames on index using concat() function
mymerged_df = pd.concat([mydf1, mydf2], axis=1)

# Print the merged 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数据框在各种数据分析场景中非常有用。使用merge()和join()等各种函数,Pandas库可以简单高效地合并数据框。根据它们的索引,两个数据框的列被合并到最终的数据框中。数据框是一个具有线段和分段的二层标记信息结构,每个分段可以有不同的数据类型,并且线段和分段都有名称。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程