Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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 @@ -6072,8 +6072,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 @@ -6141,8 +6143,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 @@ -6213,8 +6217,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
49 changes: 49 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,47 @@ 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():
"""Test eq with Enum and List elements"""

class Thing(Enum):
FIRST = auto()
SECOND = auto()

left = pd.Series([Thing.FIRST, Thing.SECOND])
tm.assert_series_equal(left.eq(Thing.FIRST), left == Thing.FIRST)

py_l = [Thing.FIRST, Thing.SECOND]
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), left == pd_s)

left_non_scalar = pd.Series([[1, 2], [3, 4]])
with pytest.raises(AssertionError):
tm.assert_series_equal(left_non_scalar.eq([1, 2]), pd.Series([True, False]))


def test_eq_with_index():
"""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]))

match = r"Can only compare identically-labeled Series objects"
with pytest.raises(ValueError, match=match):
_ = left == pd_s

tm.assert_series_equal(left.eq(pd.Series([2, 1])), pd.Series([True, True]))
Loading