我有两个数据帧,如下所示:我想逐行比较两个数据帧,如果假设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
答案 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的行。