我尝试比较以下两个数据帧,并将“ 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')
答案 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))