我有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)
答案 0 :(得分:1)
我建议先查找有什么区别,但是pd.equals
很难,因为它只会给您True
或False
,您可以尝试吗?
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
,您可以使用负数来增大允许的误差