Skip to content
6 changes: 4 additions & 2 deletions pandas/core/ops/docstrings.py
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
18 changes: 12 additions & 6 deletions pandas/core/series.py
Original file line number Diff line number Diff line change
Expand Up @@ -6070,8 +6070,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.
Expand Down Expand Up @@ -6139,8 +6141,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.
Expand Down Expand Up @@ -6211,8 +6215,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.
Expand Down
56 changes: 56 additions & 0 deletions pandas/tests/series/methods/test_compare.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
from enum import (
Enum,
auto,
)

import numpy as np
import pytest

Expand Down Expand Up @@ -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():
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same requests with this test.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You mean removing the whole test test_eq_with_index?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No, the requests in the test above also to be done in this test as well.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi @rhshadrach , from the context I am not too sure which lines to be remove. Could you be more specific and quote the line numbers? Thanks.

I have checked

    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)

which seems to have analogy with the lines I removed earlier. That seems to be a new test to me.

# 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]))
Loading