@@ -3780,7 +3780,7 @@ def _reorder_indexer(
3780
3780
3781
3781
def searchsorted (
3782
3782
self ,
3783
- value : Union [ Tuple [ Hashable , ...], Sequence [ Tuple [ Hashable , ...]]],
3783
+ value : Any ,
3784
3784
side : Literal ["left" , "right" ] = "left" ,
3785
3785
sorter : npt .NDArray [np .intp ] | None = None ,
3786
3786
) -> npt .NDArray [np .intp ]:
@@ -3789,7 +3789,7 @@ def searchsorted(
3789
3789
3790
3790
Parameters
3791
3791
----------
3792
- value : tuple
3792
+ value : Any
3793
3793
The value(s) to search for in the MultiIndex.
3794
3794
side : {'left', 'right'}, default 'left'
3795
3795
If 'left', the index of the first suitable location found is given.
@@ -3800,7 +3800,7 @@ def searchsorted(
3800
3800
3801
3801
Returns
3802
3802
-------
3803
- numpy.ndarray
3803
+ npt.NDArray[np.intp]
3804
3804
Array of insertion points.
3805
3805
3806
3806
See Also
@@ -3813,18 +3813,19 @@ def searchsorted(
3813
3813
>>> mi.searchsorted(("b", "y"))
3814
3814
1
3815
3815
"""
3816
+
3817
+ if not value :
3818
+ raise ValueError ("searchsorted requires a non-empty value" )
3819
+
3816
3820
if not isinstance (value , (tuple , list )):
3817
3821
raise TypeError ("value must be a tuple or list" )
3818
3822
3819
3823
if isinstance (value , tuple ):
3820
- values = [value ]
3824
+ value = [value ]
3825
+
3821
3826
if side not in ["left" , "right" ]:
3822
3827
raise ValueError ("side must be either 'left' or 'right'" )
3823
3828
3824
- if not value :
3825
- raise ValueError ("searchsorted requires a non-empty value" )
3826
-
3827
-
3828
3829
indexer = self .get_indexer (value )
3829
3830
result = []
3830
3831
@@ -3834,20 +3835,20 @@ def searchsorted(
3834
3835
else :
3835
3836
dtype = np .dtype (
3836
3837
[
3837
- (f"level_{ i } " , level .dtype )
3838
+ (f"level_{ i } " , np . asarray ( level ) .dtype )
3838
3839
for i , level in enumerate (self .levels )
3839
3840
]
3840
3841
)
3841
-
3842
- val_array = np .array (values , dtype = dtype )
3842
+
3843
+ val_array = np .array ([ v ] , dtype = dtype )
3843
3844
3844
3845
pos = np .searchsorted (
3845
3846
np .asarray (self .values , dtype = dtype ),
3846
3847
val_array ,
3847
3848
side = side ,
3848
3849
sorter = sorter ,
3849
3850
)
3850
- result .append (pos )
3851
+ result .append (int ( pos [ 0 ]) )
3851
3852
3852
3853
return np .array (result , dtype = np .intp )
3853
3854
0 commit comments