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]
`