Skip to content

Commit c29736a

Browse files
authored
Bug: Fix Inconsistent Behavior for Series.searchsorted (#49706)
* Bug: Fix inconsistent behavior in searchsorted (#49620) Raise error when DataFrame is passed to searchsorted * Update v2.0.0.rst * Revert "Update v2.0.0.rst" This reverts commit 0b1b450. * Update whatsnew * Update v2.0.0.rst * Update base.py * Revert "Update base.py" This reverts commit 090bd79. * Bug: Fix inconsistent behavior in searchsorted (#49620) Raise error when DataFrame is passed to searchsorted * Update whatsnew * Bug: Fix inconsistent behavior in searchsorted (#49620) Raise error when DataFrame is passed to searchsorted * Add test for failure on DataFrame * Add test for failure on DataFrame * Add test for failure on DataFrame * Add test for failure on DataFrame * Bug: Fix inconsistent behavior in searchsorted (#49620) * Add test for failure on DataFrame
1 parent d0e6933 commit c29736a

File tree

3 files changed

+19
-0
lines changed

3 files changed

+19
-0
lines changed

doc/source/whatsnew/v2.0.0.rst

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1007,6 +1007,8 @@ Metadata
10071007

10081008
Other
10091009
^^^^^
1010+
- Bug in :meth:`Series.searchsorted` inconsistent behavior when accepting :class:`DataFrame` as parameter ``value`` (:issue:`49620`)
1011+
-
10101012

10111013
.. ***DO NOT USE THIS SECTION***
10121014

pandas/core/base.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1292,6 +1292,13 @@ def searchsorted(
12921292
sorter: NumpySorter = None,
12931293
) -> npt.NDArray[np.intp] | np.intp:
12941294

1295+
if isinstance(value, ABCDataFrame):
1296+
msg = (
1297+
"Value must be 1-D array-like or scalar, "
1298+
f"{type(value).__name__} is not supported"
1299+
)
1300+
raise ValueError(msg)
1301+
12951302
values = self._values
12961303
if not isinstance(values, np.ndarray):
12971304
# Going through EA.searchsorted directly improves performance GH#38083

pandas/tests/series/methods/test_searchsorted.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
import numpy as np
2+
import pytest
23

4+
import pandas as pd
35
from pandas import (
46
Series,
57
Timestamp,
@@ -65,3 +67,11 @@ def test_searchsorted_sorter(self):
6567
res = ser.searchsorted([0, 3], sorter=np.argsort(ser))
6668
exp = np.array([0, 2], dtype=np.intp)
6769
tm.assert_numpy_array_equal(res, exp)
70+
71+
def test_searchsorted_dataframe_fail(self):
72+
# GH#49620
73+
ser = Series([1, 2, 3, 4, 5])
74+
vals = pd.DataFrame([[1, 2], [3, 4]])
75+
msg = "Value must be 1-D array-like or scalar, DataFrame is not supported"
76+
with pytest.raises(ValueError, match=msg):
77+
ser.searchsorted(vals)

0 commit comments

Comments
 (0)