BUG: Categorical comparison with unordered (#16339) · pandas-dev/pandas@91e9e52 (original) (raw)

`@@ -3821,6 +3821,43 @@ def test_cat_equality(self):

`

3821

3821

`pytest.raises(TypeError, lambda: a > b)

`

3822

3822

`pytest.raises(TypeError, lambda: b > a)

`

3823

3823

``

``

3824

`+

@pytest.mark.parametrize('ctor', [

`

``

3825

`+

lambda *args, **kwargs: Categorical(*args, **kwargs),

`

``

3826

`+

lambda *args, **kwargs: Series(Categorical(*args, **kwargs)),

`

``

3827

`+

])

`

``

3828

`+

def test_unordered_different_order_equal(self, ctor):

`

``

3829

`+

https://github.com/pandas-dev/pandas/issues/16014

`

``

3830

`+

c1 = ctor(['a', 'b'], categories=['a', 'b'], ordered=False)

`

``

3831

`+

c2 = ctor(['a', 'b'], categories=['b', 'a'], ordered=False)

`

``

3832

`+

assert (c1 == c2).all()

`

``

3833

+

``

3834

`+

c1 = ctor(['a', 'b'], categories=['a', 'b'], ordered=False)

`

``

3835

`+

c2 = ctor(['b', 'a'], categories=['b', 'a'], ordered=False)

`

``

3836

`+

assert (c1 != c2).all()

`

``

3837

+

``

3838

`+

c1 = ctor(['a', 'a'], categories=['a', 'b'], ordered=False)

`

``

3839

`+

c2 = ctor(['b', 'b'], categories=['b', 'a'], ordered=False)

`

``

3840

`+

assert (c1 != c2).all()

`

``

3841

+

``

3842

`+

c1 = ctor(['a', 'a'], categories=['a', 'b'], ordered=False)

`

``

3843

`+

c2 = ctor(['a', 'b'], categories=['b', 'a'], ordered=False)

`

``

3844

`+

result = c1 == c2

`

``

3845

`+

tm.assert_numpy_array_equal(np.array(result), np.array([True, False]))

`

``

3846

+

``

3847

`+

def test_unordered_different_categories_raises(self):

`

``

3848

`+

c1 = Categorical(['a', 'b'], categories=['a', 'b'], ordered=False)

`

``

3849

`+

c2 = Categorical(['a', 'c'], categories=['c', 'a'], ordered=False)

`

``

3850

`+

with tm.assert_raises_regex(TypeError,

`

``

3851

`+

"Categoricals can only be compared"):

`

``

3852

`+

c1 == c2

`

``

3853

+

``

3854

`+

def test_compare_different_lengths(self):

`

``

3855

`+

c1 = Categorical([], categories=['a', 'b'])

`

``

3856

`+

c2 = Categorical([], categories=['a'])

`

``

3857

`+

msg = "Categories are different lengths"

`

``

3858

`+

with tm.assert_raises_regex(TypeError, msg):

`

``

3859

`+

c1 == c2

`

``

3860

+

3824

3861

`def test_concat_append(self):

`

3825

3862

`cat = pd.Categorical(["a", "b"], categories=["a", "b"])

`

3826

3863

`vals = [1, 2]

`