比较两个数据框

时间:2019-02-27 21:11:54

标签: python pandas dataframe

我有两个数据帧,如下所示:我想逐行比较两个数据帧,如果假设df1的row1不等于df2的row1,则打印错误

with open('some_poem.txt') as f:
    words = re.findall(r'\w{5,}', f.read().lower())

我想为第4行打印错误,因为df1的变量'B'的值为6,而df1的值为5

3 个答案:

答案 0 :(得分:1)

您看过documentation吗?

df1.eq(df2)

      A      B
0  True   True
1  True   True
2  True   True
3  True  False
4  True   True

如果要查看特定于 的值和行,可以执行此操作

df1[~df1.eq(df2)].dropna(how='all')

    A    B
3 NaN  6.0

答案 1 :(得分:0)

我喜欢@aws_apprentice的回答。但是,由于您被要求“打印错误”,因此也请考虑pandas.testing.assert_frame_equal (docs),如果DataFrames不相同,则会引发AssertionError异常,并为您提供诊断输出。

答案 2 :(得分:0)

您应该在此处查看Andy Hayden的答案:Outputting difference in two Pandas dataframes side by side - highlighting the difference

您尝试执行的操作(如果行不同则打印错误)可能不是此处的最佳选择。您打算将哪个数据框用作比较基础并添加错误列?假设您选择df1并将其与df2进行比较,如果df2具有df1中不存在的其他行,该怎么办;在这种情况下,df1中没有添加错误msg的行。