Skip to content

DataFrame.equals false negatives with dtype=object #8437

Closed
@ischwabacher

Description

@ischwabacher

I still don't have a good enough grasp on the internals to go diving for this one quickly, but here's the observed behavior:

In [1]: import pandas as pd

In [2]: import numpy as np

In [3]: temp = [pd.Series([False, np.nan]), pd.Series([False, np.nan]), pd.Series(index=range(2)), pd.Series(index=range(2)), pd.Series(index=range(2)), pd.Series(index=range(2))]

In [4]: temp[2][:-1] = temp[3][:-1] = temp[4][0] = temp[5][0] = False

In [5]: [[x.equals(y) for y in temp] for x in temp]
Out[5]: 
[[True, True, False, False, False, False],
 [True, True, False, False, False, False],
 [False, False, True, False, False, False],
 [False, False, False, True, False, False],
 [False, False, False, False, True, True],
 [False, False, False, False, True, True]]

Here the 4x4 square in the upper left should be True. (temp[4:6] are different because inserting False into a float64 array or vice-versa coerces False into 0.0; this is inconvenient when attempting to use the array for boolean indexing.)

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions