比较来自CSV的两个熊猫数据框

时间:2020-05-18 19:55:59

标签: pandas concat drop-duplicates

我有2个CSV文件,我需要使用熊猫进行比较。这两个文件中的值相同,因此我希望df结果为空,但对我来说它们是不同的。当我阅读csv文件时,您是否认为我想念什么?或其他要测试/修复的东西?

df1=pd.read_csv('apc2019.csv', sep = '|', lineterminator=True)
df2=pd.read_csv('apc2020.csv', sep = '|', lineterminator=True)
df = pd.concat([df1,df2]).drop_duplicates(keep=False)
print(df)

1 个答案:

答案 0 :(得分:1)

我建议先查找有什么区别,但是pd.equals很难,因为它只会给您TrueFalse,您可以尝试吗?

from pandas._testing import assert_frame_equal

assert_frame_equal(df1, df2) 

这将告诉您确切的区别,并且具有不同级别的“公差”(例如,如果您不在乎列名,类型等)

详细信息here

如果要与值公差进行比较:

In [20]: from pandas._testing import assert_frame_equal 
    ...: df1 = pd.DataFrame({'a': [1, 2], 'b': [3, 4], 'c': [1, 9]}) 
    ...: df2 = pd.DataFrame({'a': [1, 2], 'b': [3, 5], 'c': [1.5, 8.5]})                                                                                                                                                                                                       

In [21]: assert_frame_equal(df1, df2, check_less_precise=-1, check_dtype=False)    

默认情况下chekc_dtype为True,因此如果您使用浮点数或整数,则会引发异常。

要更改的另一个参数是check_less_precise,您可以使用负数来增大允许的误差