如何忽略熊猫断言框架相等的索引比较

时间:2018-08-02 14:04:46

标签: python pandas

我尝试比较以下两个数据帧,并将“ check_index_type”设置为False。根据文档,如果将其设置为False,则不应“检查Index类,dtype和inferred_type是否相同”。我是否误解了文档?如何比较忽略索引并返回True进行以下测试?

我知道我可以重置索引,但不愿意。

https://pandas.pydata.org/pandas-docs/stable/generated/pandas.testing.assert_frame_equal.html

from pandas.util.testing import assert_frame_equal
import pandas as pd
d1 = pd.DataFrame([[1,2], [10, 20]], index=[0,2])
d2 = pd.DataFrame([[1, 2], [10, 20]], index=[0, 1])
assert_frame_equal(d1, d2, check_index_type=False)


AssertionError: DataFrame.index are different
DataFrame.index values are different (50.0 %)
[left]:  Int64Index([0, 2], dtype='int64')
[right]: Int64Index([0, 1], dtype='int64')

2 个答案:

答案 0 :(得分:17)

索引是数据帧的一部分,如果索引不同,则应该说数据帧是不同的,即使dfs的值相同,因此,如果要检查该值,请使用{中的array_equal {1}}

numpy

有关git中的d1 = pd.DataFrame([[1,2], [10, 20]], index=[0,2]) d2 = pd.DataFrame([[1, 2], [10, 20]], index=[0, 1]) np.array_equal(d1.values,d2.values) Out[759]: True 的更多信息

答案 1 :(得分:10)

如果您真的不关心索引是否相等,则可以按以下方式删除索引:

assert_frame_equal(d1.reset_index(drop=True), d2.reset_index(drop=True))