From fa44e367ac1fe24f16b19c873578d384c7301fe1 Mon Sep 17 00:00:00 2001 From: Richard Shadrach Date: Thu, 4 Dec 2025 17:09:26 -0500 Subject: [PATCH 1/2] REGR: Fix IntervalArray.nunique with infinity --- pandas/core/arrays/interval.py | 5 ++--- pandas/tests/arrays/interval/test_interval.py | 14 ++++++++++++++ 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/pandas/core/arrays/interval.py b/pandas/core/arrays/interval.py index a7966dc0dee82..057cc5374d3e9 100644 --- a/pandas/core/arrays/interval.py +++ b/pandas/core/arrays/interval.py @@ -2128,9 +2128,8 @@ def _combined(self) -> IntervalSide: ) comb = comb.view("complex128")[:, 0] else: - comb = (np.array(left.ravel(), dtype="complex128")) + ( - 1j * np.array(right.ravel(), dtype="complex128") - ) + comb = np.array(left.ravel(), dtype="complex128") + comb.imag = right.ravel() return comb def _from_combined(self, combined: np.ndarray) -> IntervalArray: diff --git a/pandas/tests/arrays/interval/test_interval.py b/pandas/tests/arrays/interval/test_interval.py index 46bef89778a35..d3a724cd5310e 100644 --- a/pandas/tests/arrays/interval/test_interval.py +++ b/pandas/tests/arrays/interval/test_interval.py @@ -136,6 +136,20 @@ def test_unique_with_negatives(self): ) tm.assert_index_equal(result, expected) + @pytest.mark.parametrize( + "data", + [ + [Interval(-np.inf, 0), Interval(-np.inf, 1)], + [Interval(0, np.inf), Interval(1, np.inf)], + ], + ) + def test_unique_with_infinty(self, data): + # https://github.com/pandas-dev/pandas/issues/63218 + s = pd.Series(data) + tm.assert_interval_array_equal(s.unique(), s.array) + assert s.nunique() == 2 + tm.assert_series_equal(s.drop_duplicates(), s) + class TestSetitem: def test_set_na(self, left_right_dtypes): From d54d98276946660145786e1ed41d5890bcf5ad2b Mon Sep 17 00:00:00 2001 From: Richard Shadrach Date: Fri, 5 Dec 2025 06:59:57 -0500 Subject: [PATCH 2/2] np.asarray --- pandas/core/arrays/interval.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pandas/core/arrays/interval.py b/pandas/core/arrays/interval.py index 057cc5374d3e9..8b2319bd5ab9f 100644 --- a/pandas/core/arrays/interval.py +++ b/pandas/core/arrays/interval.py @@ -2128,7 +2128,7 @@ def _combined(self) -> IntervalSide: ) comb = comb.view("complex128")[:, 0] else: - comb = np.array(left.ravel(), dtype="complex128") + comb = np.asarray(left.ravel(), dtype="complex128") comb.imag = right.ravel() return comb