Pandas:如何检查两个 dataframe 是否相等


您可以使用以下基本语法来检查两个 pandas DataFrame 是否相等:

 df1. equals (df2)

这将返回TrueFalse值。

如果两个 DataFrame 不相等,您可以使用以下语法查找第二个 DataFrame 中第一个 DataFrame 中不存在的行:

 #perform outer join on two DataFrames
all_df = df1. merge (df2, indicator= True , how=' outer ')

#find which rows only exist in second DataFrame
only_df2 = all_df[all_df[' _merge '] == ' right_only ']
only_df2 = only_df2. drop (' _merge ', axis= 1 )

以下示例展示了如何在实践中使用此语法。

示例:检查两个 pandas DataFrame 是否相等

假设我们有以下两个 panda DataFrame:

 import pandas as pd

#create first DataFrame
df1 = pd. DataFrame ({' team ': ['A', 'B', 'C', 'D', 'E'], 
                    ' points ': [12, 15, 22, 29, 24]}) 

print (df1)

  team points
0 to 12
1 B 15
2 C 22
3 D 29
4 E 24

#create second DataFrame
df2 = pd. DataFrame ({' team ': ['A', 'D', 'F', 'G', 'H'],
                    ' points ': [12, 29, 15, 19, 10]})

print (df2)

  team points
0 to 12
1 D 29
2 F 15
3 G 19
4:10 a.m.

我们可以使用以下语法来检查两个 DataFrame 是否相等:

 #check if two DataFrames are equal
df1. equals (df2)

False

输出返回False ,这意味着两个 DataFrame 不相等。

然后,我们可以使用以下语法来查找第二个 DataFrame 中存在但第一个中不存在的行:

 #perform outer join on two DataFrames
all_df = df1. merge (df2, indicator= True , how=' outer ')

#find which rows only exist in second DataFrame
only_df2 = all_df[all_df[' _merge '] == ' right_only ']
only_df2 = only_df2. drop (' _merge ', axis= 1 )

#view results
print (only_df2)

  team points
5 F 15
6 G 19
7:10 a.m.

从结果中,我们可以看到第二个DataFrame中有三行在第一个DataFrame中不存在。

其他资源

以下教程解释了如何在 pandas 中执行其他常见任务:

Pandas:将一列从一个 DataFrame 添加到另一个 DataFrame
Pandas:获取不在另一个 DataFrame 中的行
Pandas:如何检查多列是否相等

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注