Skip to content

Commit 0e0b9b5

Browse files
committed
fixed the returned statement error
1 parent 275b0e2 commit 0e0b9b5

File tree

2 files changed

+31
-33
lines changed

2 files changed

+31
-33
lines changed

pandas/core/indexes/multi.py

Lines changed: 24 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -3780,7 +3780,7 @@ def _reorder_indexer(
37803780

37813781
def searchsorted(
37823782
self,
3783-
value: tuple[Hashable, ...],
3783+
value: Union[Tuple[Hashable, ...], Sequence[Tuple[Hashable, ...]]],
37843784
side: Literal["left", "right"] = "left",
37853785
sorter: npt.NDArray[np.intp] | None = None,
37863786
) -> npt.NDArray[np.intp]:
@@ -3817,42 +3817,39 @@ def searchsorted(
38173817
raise TypeError("value must be a tuple or list")
38183818

38193819
if isinstance(value, tuple):
3820-
value = [value]
3820+
values = [value]
38213821
if side not in ["left", "right"]:
38223822
raise ValueError("side must be either 'left' or 'right'")
38233823

38243824
if not value:
38253825
raise ValueError("searchsorted requires a non-empty value")
38263826

3827-
try:
3828-
indexer = self.get_indexer(value)
3829-
result = []
3827+
3828+
indexer = self.get_indexer(value)
3829+
result = []
38303830

3831-
for v, i in zip(value, indexer):
3832-
if i != -1:
3833-
result.append(i if side == "left" else i + 1)
3834-
else:
3835-
dtype = np.dtype(
3836-
[
3837-
(f"level_{i}", level.dtype)
3838-
for i, level in enumerate(self.levels)
3839-
]
3840-
)
3841-
3842-
val_array = np.array(value, dtype=dtype)
3831+
for v, i in zip(value, indexer):
3832+
if i != -1:
3833+
result.append(i if side == "left" else i + 1)
3834+
else:
3835+
dtype = np.dtype(
3836+
[
3837+
(f"level_{i}", level.dtype)
3838+
for i, level in enumerate(self.levels)
3839+
]
3840+
)
38433841

3844-
pos = np.searchsorted(
3845-
np.asarray(self.values, dtype=dtype),
3846-
val_array,
3847-
side=side,
3848-
sorter=sorter,
3849-
)
3850-
result.append(pos)
3842+
val_array = np.array(values, dtype=dtype)
38513843

3852-
return np.array(result, dtype=np.intp)
3844+
pos = np.searchsorted(
3845+
np.asarray(self.values, dtype=dtype),
3846+
val_array,
3847+
side=side,
3848+
sorter=sorter,
3849+
)
3850+
result.append(pos)
38533851

3854-
except KeyError:
3855-
pass
3852+
return np.array(result, dtype=np.intp)
38563853

38573854
def truncate(self, before=None, after=None) -> MultiIndex:
38583855
"""

pandas/tests/indexes/multi/test_indexing.py

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1032,14 +1032,15 @@ def test_get_loc_namedtuple_behaves_like_tuple():
10321032

10331033

10341034
def test_searchsorted():
1035-
mi = MultiIndex.from_tuples([("a", 0), ("a", 1), ("b", 0), ("b", 1), ("c", 0)])
1035+
mi = MultiIndex.from_tuples([("a", 0), ("a", 1), ("b", 0),
1036+
("b", 1), ("c", 0)])
10361037

1037-
assert mi.searchsorted(("b", 0)) == 2
1038-
assert mi.searchsorted(("b", 0), side="right") == 3
1038+
assert np.all(mi.searchsorted(("b", 0)) == 2)
1039+
assert np.all(mi.searchsorted(("b", 0), side="right") == 3)
10391040

1040-
assert mi.searchsorted(("a", 0)) == 0
1041-
assert mi.searchsorted(("a", -1)) == 0
1042-
assert mi.searchsorted(("c", 1)) == 5 # Beyond the last
1041+
assert np.all(mi.searchsorted(("a", 0)) == 0)
1042+
assert np.all(mi.searchsorted(("a", -1)) == 0)
1043+
assert np.all(mi.searchsorted(("c", 1)) == 5) # Beyond the last
10431044

10441045
result = mi.searchsorted([("a", 1), ("b", 0), ("c", 0)])
10451046
expected = np.array([1, 2, 4], dtype=np.intp)

0 commit comments

Comments
 (0)