Pandas 具有不同数据类型和元素的索引对象的相等性

Pandas 具有不同数据类型和元素的索引对象的相等性,pandas,Pandas,有人能解释为什么熊猫的评估结果是正确的(0.18.0): 这些索引对象具有不同的元素和不同的数据类型。它们通过什么机制是相同的 (我发现1971-10-01的日期可以用mmddyy格式写成100171。这不符合同等条件。) 如何编写比较两个数据帧的断言 df1 = pd.DataFrame([1], columns=pd.DatetimeIndex(['1971-10-01'], dtype='datetime64[ns]', freq=None) df2 = pd.DataFrame

有人能解释为什么熊猫的评估结果是正确的(0.18.0):

这些索引对象具有不同的元素和不同的数据类型。它们通过什么机制是相同的

(我发现1971-10-01的日期可以用mmddyy格式写成100171。这不符合同等条件。)

如何编写比较两个数据帧的断言

df1 = pd.DataFrame([1], columns=pd.DatetimeIndex(['1971-10-01'], 
    dtype='datetime64[ns]', freq=None)
df2 = pd.DataFrame([1], columns=pd.Index(['100171'], dtype='object')
assert df1.equals(df2)  # this assertion succeeds!?

这失败了,因为索引实际上是不同的?

这实际上是一个病理病例

In [1]: i1 = pd.DatetimeIndex(['1971-10-01'], dtype='datetime64[ns]', freq=None)

In [2]: i2 = pd.Index([u'100171'], dtype='object')

In [3]: i1
Out[3]: DatetimeIndex(['1971-10-01'], dtype='datetime64[ns]', freq=None)

In [4]: pd.DatetimeIndex(i2)
Out[4]: DatetimeIndex(['1971-10-01'], dtype='datetime64[ns]', freq=None)
.equals
尝试强制为相同的类型,例如字符串被强制(如果可能);在这种情况下,他们实际上是平等的

我提出了一个问题,如果有人想看看我们是否可以消除这种情况

In [1]: i1 = pd.DatetimeIndex(['1971-10-01'], dtype='datetime64[ns]', freq=None)

In [2]: i2 = pd.Index([u'100171'], dtype='object')

In [3]: i1
Out[3]: DatetimeIndex(['1971-10-01'], dtype='datetime64[ns]', freq=None)

In [4]: pd.DatetimeIndex(i2)
Out[4]: DatetimeIndex(['1971-10-01'], dtype='datetime64[ns]', freq=None)