Pandas 具有不同数据类型和元素的索引对象的相等性
有人能解释为什么熊猫的评估结果是正确的(0.18.0): 这些索引对象具有不同的元素和不同的数据类型。它们通过什么机制是相同的 (我发现1971-10-01的日期可以用mmddyy格式写成100171。这不符合同等条件。) 如何编写比较两个数据帧的断言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
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)