📜  如何用 Pandas 比较两个数据框?(1)

📅  最后修改于: 2023-12-03 14:53:13.231000             🧑  作者: Mango

如何用 Pandas 比较两个数据框?

比较两个数据框可以帮助我们找到它们之间的差异,这在数据清洗和数据分析时非常有用。Pandas 是一个功能强大的 Python 库,它提供了各种方法来比较两个数据框。在本文中,我们将学习几种比较数据框的方法。

用 equals() 方法比较

Pandas 的 DataFrame 类提供了一个名为 equals() 的方法,用于比较两个数据框。这个方法可以比较两个数据框的形状和值,并返回一个布尔值。

import pandas as pd

# 创建两个数据框 df1 和 df2
df1 = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9]})
df2 = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9]})

# 比较两个数据框
result = df1.equals(df2)
print(result)

上面的代码将比较两个数据框 df1 和 df2 是否相等,结果为 True,因为它们的形状和值相同。

用 equals() 方法比较多个数据框

可以使用 equals() 方法一次比较多个数据框。

import pandas as pd

# 创建三个数据框 df1、df2 和 df3
df1 = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9]})
df2 = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9]})
df3 = pd.DataFrame({'A': [4, 5, 6], 'B': [7, 8, 9], 'C': [1, 2, 3]})

# 比较三个数据框
result = df1.equals(df2) and df1.equals(df3)
print(result)

上面的代码将比较三个数据框 df1、df2 和 df3 是否相等,结果为 False,因为它们的值不同。

用 compare() 方法比较

Pandas 的 DataFrame 类提供了一个名为 compare() 的方法,用于比较两个数据框,并返回一个数据框,其中列名称是原始数据框中的列名称,行名称为两个数据框中相应值的比较结果。

import pandas as pd

# 创建两个数据框 df1 和 df2
df1 = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9]})
df2 = pd.DataFrame({'A': [1, 2, 4], 'B': [4, 5, 6], 'C': [7, 8, 10]})

# 比较两个数据框
result = df1.compare(df2)
print(result)

上面的代码将比较两个数据框 df1 和 df2,结果为:

     A       C
  self other self other
2   3     4    9   10
用 merge() 方法比较

如果要比较两个数据框中的单个列,请使用 merge() 方法将它们合并到一个数据框中,然后比较这个数据框。这个方法将返回两个数据框中列值相同的行。

import pandas as pd

# 创建两个数据框 df1 和 df2
df1 = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9]})
df2 = pd.DataFrame({'D': [2, 3, 4], 'E': [7, 8, 9], 'F': [10, 11, 12]})

# 合并两个数据框
merged_df = pd.merge(df1[['A', 'B']], df2[['D', 'E']], left_on='A', right_on='D')

# 比较合并后的数据框
result = merged_df.equals(pd.DataFrame({'A': [2, 3], 'B': [5, 6], 'D': [2, 3], 'E': [7, 8]}))
print(result)

上面的代码将比较两个数据框 df1 和 df2 中 A 和 D 列的值是否相同,结果为 True。

总之,当我们需要比较两个数据框时,可以使用 Pandas 提供的 equals()、compare() 和 merge() 方法。它们提供了各种方法来比较两个数据框,可以根据具体情况选择适当的方法。