31
31
DtypeObj ,
32
32
Scalar ,
33
33
Shape ,
34
+ npt ,
34
35
)
35
36
from pandas .compat .numpy import function as nv
36
37
from pandas .errors import (
@@ -1588,7 +1589,7 @@ def _inferred_type_levels(self) -> list[str]:
1588
1589
return [i .inferred_type for i in self .levels ]
1589
1590
1590
1591
@doc (Index .duplicated )
1591
- def duplicated (self , keep = "first" ) -> np .ndarray :
1592
+ def duplicated (self , keep = "first" ) -> npt . NDArray [ np .bool_ ] :
1592
1593
shape = tuple (len (lev ) for lev in self .levels )
1593
1594
ids = get_group_index (self .codes , shape , sort = False , xnull = False )
1594
1595
@@ -1842,7 +1843,7 @@ def _is_lexsorted(self) -> bool:
1842
1843
return self ._lexsort_depth == self .nlevels
1843
1844
1844
1845
@property
1845
- def lexsort_depth (self ):
1846
+ def lexsort_depth (self ) -> int :
1846
1847
warnings .warn (
1847
1848
"MultiIndex.is_lexsorted is deprecated as a public function, "
1848
1849
"users should use MultiIndex.is_monotonic_increasing instead." ,
@@ -2152,7 +2153,7 @@ def append(self, other):
2152
2153
except (TypeError , IndexError ):
2153
2154
return Index ._with_infer (new_tuples )
2154
2155
2155
- def argsort (self , * args , ** kwargs ) -> np .ndarray :
2156
+ def argsort (self , * args , ** kwargs ) -> npt . NDArray [ np .intp ] :
2156
2157
return self ._values .argsort (* args , ** kwargs )
2157
2158
2158
2159
@Appender (_index_shared_docs ["repeat" ] % _index_doc_kwargs )
@@ -2371,7 +2372,7 @@ def cats(level_codes):
2371
2372
2372
2373
def sortlevel (
2373
2374
self , level = 0 , ascending : bool = True , sort_remaining : bool = True
2374
- ) -> tuple [MultiIndex , np .ndarray ]:
2375
+ ) -> tuple [MultiIndex , npt . NDArray [ np .intp ] ]:
2375
2376
"""
2376
2377
Sort MultiIndex at the requested level.
2377
2378
@@ -2392,7 +2393,7 @@ def sortlevel(
2392
2393
-------
2393
2394
sorted_index : pd.MultiIndex
2394
2395
Resulting index.
2395
- indexer : np.ndarray
2396
+ indexer : np.ndarray[np.intp]
2396
2397
Indices of output values in original index.
2397
2398
2398
2399
Examples
@@ -2493,7 +2494,7 @@ def _wrap_reindex_result(self, target, indexer, preserve_names: bool):
2493
2494
target = self ._maybe_preserve_names (target , preserve_names )
2494
2495
return target
2495
2496
2496
- def _maybe_preserve_names (self , target : Index , preserve_names : bool ):
2497
+ def _maybe_preserve_names (self , target : Index , preserve_names : bool ) -> Index :
2497
2498
if (
2498
2499
preserve_names
2499
2500
and target .nlevels == self .nlevels
@@ -2506,7 +2507,7 @@ def _maybe_preserve_names(self, target: Index, preserve_names: bool):
2506
2507
# --------------------------------------------------------------------
2507
2508
# Indexing Methods
2508
2509
2509
- def _check_indexing_error (self , key ):
2510
+ def _check_indexing_error (self , key ) -> None :
2510
2511
if not is_hashable (key ) or is_iterator (key ):
2511
2512
# We allow tuples if they are hashable, whereas other Index
2512
2513
# subclasses require scalar.
@@ -2541,7 +2542,9 @@ def _get_values_for_loc(self, series: Series, loc, key):
2541
2542
new_ser = series ._constructor (new_values , index = new_index , name = series .name )
2542
2543
return new_ser .__finalize__ (series )
2543
2544
2544
- def _get_indexer_strict (self , key , axis_name : str ) -> tuple [Index , np .ndarray ]:
2545
+ def _get_indexer_strict (
2546
+ self , key , axis_name : str
2547
+ ) -> tuple [Index , npt .NDArray [np .intp ]]:
2545
2548
2546
2549
keyarr = key
2547
2550
if not isinstance (keyarr , Index ):
@@ -2555,7 +2558,7 @@ def _get_indexer_strict(self, key, axis_name: str) -> tuple[Index, np.ndarray]:
2555
2558
2556
2559
return super ()._get_indexer_strict (key , axis_name )
2557
2560
2558
- def _raise_if_missing (self , key , indexer , axis_name : str ):
2561
+ def _raise_if_missing (self , key , indexer , axis_name : str ) -> None :
2559
2562
keyarr = key
2560
2563
if not isinstance (key , Index ):
2561
2564
keyarr = com .asarray_tuplesafe (key )
@@ -2575,7 +2578,7 @@ def _raise_if_missing(self, key, indexer, axis_name: str):
2575
2578
else :
2576
2579
return super ()._raise_if_missing (key , indexer , axis_name )
2577
2580
2578
- def _get_indexer_level_0 (self , target ) -> np .ndarray :
2581
+ def _get_indexer_level_0 (self , target ) -> npt . NDArray [ np .intp ] :
2579
2582
"""
2580
2583
Optimized equivalent to `self.get_level_values(0).get_indexer_for(target)`.
2581
2584
"""
@@ -2640,7 +2643,9 @@ def get_slice_bound(
2640
2643
label = (label ,)
2641
2644
return self ._partial_tup_index (label , side = side )
2642
2645
2643
- def slice_locs (self , start = None , end = None , step = None , kind = lib .no_default ):
2646
+ def slice_locs (
2647
+ self , start = None , end = None , step = None , kind = lib .no_default
2648
+ ) -> tuple [int , int ]:
2644
2649
"""
2645
2650
For an ordered MultiIndex, compute the slice locations for input
2646
2651
labels.
@@ -3614,7 +3619,7 @@ def _maybe_match_names(self, other):
3614
3619
names .append (None )
3615
3620
return names
3616
3621
3617
- def _wrap_intersection_result (self , other , result ):
3622
+ def _wrap_intersection_result (self , other , result ) -> MultiIndex :
3618
3623
_ , result_names = self ._convert_can_do_setop (other )
3619
3624
3620
3625
if len (result ) == 0 :
@@ -3627,7 +3632,7 @@ def _wrap_intersection_result(self, other, result):
3627
3632
else :
3628
3633
return MultiIndex .from_arrays (zip (* result ), sortorder = 0 , names = result_names )
3629
3634
3630
- def _wrap_difference_result (self , other , result ):
3635
+ def _wrap_difference_result (self , other , result ) -> MultiIndex :
3631
3636
_ , result_names = self ._convert_can_do_setop (other )
3632
3637
3633
3638
if len (result ) == 0 :
@@ -3738,7 +3743,7 @@ def delete(self, loc) -> MultiIndex:
3738
3743
)
3739
3744
3740
3745
@doc (Index .isin )
3741
- def isin (self , values , level = None ) -> np .ndarray :
3746
+ def isin (self , values , level = None ) -> npt . NDArray [ np .bool_ ] :
3742
3747
if level is None :
3743
3748
values = MultiIndex .from_tuples (values , names = self .names )._values
3744
3749
return algos .isin (self ._values , values )
0 commit comments