diff --git a/pandas/core/ops/docstrings.py b/pandas/core/ops/docstrings.py index 5ce0a2da86f31..d97880f133306 100644 --- a/pandas/core/ops/docstrings.py +++ b/pandas/core/ops/docstrings.py @@ -435,8 +435,10 @@ def make_flex_doc(op_name: str, typ: str) -> str: Parameters ---------- -other : Series or scalar value - The second operand in this operation. +other : object + When a Series is provided, will align on indexes. For all other types, + will behave the same as ``==`` but with possibly different results due + to the other arguments. level : int or name Broadcast across a level, matching Index values on the passed MultiIndex level. diff --git a/pandas/core/series.py b/pandas/core/series.py index 11a59f261de5c..3add1984ed078 100644 --- a/pandas/core/series.py +++ b/pandas/core/series.py @@ -6064,8 +6064,10 @@ def eq( Parameters ---------- - other : Series or scalar value - The second operand in this operation. + other : object + When a Series is provided, will align on indexes. For all other types, + will behave the same as ``==`` but with possibly different results due + to the other arguments. level : int or name Broadcast across a level, matching Index values on the passed MultiIndex level. @@ -6133,8 +6135,10 @@ def le(self, other, level=None, fill_value=None, axis: Axis = 0) -> Series: Parameters ---------- - other : Series or scalar value - The second operand in this operation. + other : object + When a Series is provided, will align on indexes. For all other types, + will behave the same as ``==`` but with possibly different results due + to the other arguments. level : int or name Broadcast across a level, matching Index values on the passed MultiIndex level. @@ -6205,8 +6209,10 @@ def ge(self, other, level=None, fill_value=None, axis: Axis = 0) -> Series: Parameters ---------- - other : Series or scalar value - The second operand in this operation. + other : object + When a Series is provided, will align on indexes. For all other types, + will behave the same as ``==`` but with possibly different results due + to the other arguments. level : int or name Broadcast across a level, matching Index values on the passed MultiIndex level. diff --git a/pandas/tests/series/methods/test_compare.py b/pandas/tests/series/methods/test_compare.py index 2a57d5139b62c..e62e07c9b0eec 100644 --- a/pandas/tests/series/methods/test_compare.py +++ b/pandas/tests/series/methods/test_compare.py @@ -1,3 +1,8 @@ +from enum import ( + Enum, + auto, +) + import numpy as np import pytest @@ -138,3 +143,54 @@ def test_compare_datetime64_and_string(): tm.assert_series_equal(result_eq1, expected_eq) tm.assert_series_equal(result_eq2, expected_eq) tm.assert_series_equal(result_neq, expected_neq) + + +def test_eq_objects(): + # GH#62191 Test eq with Enum and List elements + + class Thing(Enum): + FIRST = auto() + SECOND = auto() + + left = pd.Series([Thing.FIRST, Thing.SECOND]) + + result_scalar = left.eq(Thing.FIRST) + expected_scalar = left == Thing.FIRST + tm.assert_series_equal(result_scalar, expected_scalar) + + py_l = [Thing.FIRST, Thing.SECOND] + result_py_l = left.eq(py_l) + expected_py_l = left == py_l + tm.assert_series_equal(result_py_l, expected_py_l) + + np_a = np.asarray(py_l) + result_np_a = left.eq(np_a) + expected_np_a = left == np_a + tm.assert_series_equal(result_np_a, expected_np_a) + + pd_s = pd.Series(py_l) + result_pd_s = left.eq(pd_s) + expected_pd_s = left == pd_s + tm.assert_series_equal(result_pd_s, expected_pd_s) + + left_non_scalar = pd.Series([[1, 2], [3, 4]]) + result_non_scalar = left_non_scalar.eq([1, 2]) + expected_would_be = pd.Series([True, False]) + with pytest.raises(AssertionError): + tm.assert_series_equal(result_non_scalar, expected_would_be) + + +def test_eq_with_index(): + # GH#62191 Test eq with non-trivial indices + left = pd.Series([1, 2], index=[1, 0]) + + py_l = [1, 2] + tm.assert_series_equal(left.eq(py_l), left == py_l) + + np_a = np.asarray(py_l) + tm.assert_series_equal(left.eq(np_a), left == np_a) + + pd_s = pd.Series(py_l) + tm.assert_series_equal(left.eq(pd_s), pd.Series([False, False])) + + tm.assert_series_equal(left.eq(pd.Series([2, 1])), pd.Series([True, True]))