20
20
from pandas ._interval import (Interval , IntervalMixin , IntervalTree ,
21
21
intervals_to_interval_bounds )
22
22
from pandas .util .decorators import cache_readonly , Appender
23
+ import pandas .indexes .base as ibase
24
+ _index_doc_kwargs = dict (ibase ._index_doc_kwargs )
25
+ _index_doc_kwargs .update (
26
+ dict (klass = 'IntervalIndex' ,
27
+ target_klass = 'IntervalIndex or list of Intervals' ))
23
28
24
29
25
30
_VALID_CLOSED = set (['left' , 'right' , 'both' , 'neither' ])
@@ -411,7 +416,7 @@ def _convert_list_indexer(self, keyarr, kind=None):
411
416
Return our indexer or raise if all of the values are not
412
417
included in the categories
413
418
"""
414
- locs = self .get_indexer (keyarr )
419
+ locs = self .get_indexer_for (keyarr )
415
420
check = locs == - 1
416
421
locs = locs [~ check ]
417
422
return locs
@@ -501,6 +506,7 @@ def get_value(self, series, key):
501
506
loc = self .get_loc (key ) # nb. this can't handle slice objects
502
507
return series .iloc [loc ]
503
508
509
+ @Appender (_index_shared_docs ['get_indexer' ] % _index_doc_kwargs )
504
510
def get_indexer (self , target , method = None , limit = None , tolerance = None ):
505
511
self ._check_method (method )
506
512
target = _ensure_index (target )
@@ -519,12 +525,15 @@ def get_indexer(self, target, method=None, limit=None, tolerance=None):
519
525
'for IntervalIndex indexers' )
520
526
521
527
if not self .is_unique :
522
- indexer , missing = self ._engine .get_indexer_non_unique (
523
- target .values )
524
- else :
525
- indexer = self ._engine .get_indexer (target .values )
528
+ raise ValueError ("get_indexer cannot handle non-unique indices" )
529
+
530
+ indexer = self ._engine .get_indexer (target .values )
526
531
return indexer
527
532
533
+ @Appender (_index_shared_docs ['get_indexer_non_unique' ] % _index_doc_kwargs )
534
+ def get_indexer_non_unique (self , target ):
535
+ return super (IntervalIndex , self ).get_indexer_non_unique (target )
536
+
528
537
def sort_values (self , return_indexer = False , ascending = True ):
529
538
"""
530
539
Return sorted copy of Index
@@ -583,7 +592,7 @@ def _append_same_dtype(self, to_concat, name):
583
592
raise ValueError (msg )
584
593
return super (IntervalIndex , self )._append_same_dtype (to_concat , name )
585
594
586
- @Appender (_index_shared_docs ['take' ])
595
+ @Appender (_index_shared_docs ['take' ] % _index_doc_kwargs )
587
596
def take (self , indices , axis = 0 , allow_fill = True ,
588
597
fill_value = None , ** kwargs ):
589
598
nv .validate_take (tuple (), kwargs )
0 commit comments