Pandas:如何检查两个 dataframe 是否相等
您可以使用以下基本语法来检查两个 pandas DataFrame 是否相等:
df1. equals (df2)
这将返回True或False值。
如果两个 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:如何检查多列是否相等