2020from pandas ._interval import (Interval , IntervalMixin , IntervalTree ,
2121 intervals_to_interval_bounds )
2222from 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' ))
2328
2429
2530_VALID_CLOSED = set (['left' , 'right' , 'both' , 'neither' ])
@@ -411,7 +416,7 @@ def _convert_list_indexer(self, keyarr, kind=None):
411416 Return our indexer or raise if all of the values are not
412417 included in the categories
413418 """
414- locs = self .get_indexer (keyarr )
419+ locs = self .get_indexer_for (keyarr )
415420 check = locs == - 1
416421 locs = locs [~ check ]
417422 return locs
@@ -501,6 +506,7 @@ def get_value(self, series, key):
501506 loc = self .get_loc (key ) # nb. this can't handle slice objects
502507 return series .iloc [loc ]
503508
509+ @Appender (_index_shared_docs ['get_indexer' ] % _index_doc_kwargs )
504510 def get_indexer (self , target , method = None , limit = None , tolerance = None ):
505511 self ._check_method (method )
506512 target = _ensure_index (target )
@@ -519,12 +525,15 @@ def get_indexer(self, target, method=None, limit=None, tolerance=None):
519525 'for IntervalIndex indexers' )
520526
521527 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 )
526531 return indexer
527532
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+
528537 def sort_values (self , return_indexer = False , ascending = True ):
529538 """
530539 Return sorted copy of Index
@@ -583,7 +592,7 @@ def _append_same_dtype(self, to_concat, name):
583592 raise ValueError (msg )
584593 return super (IntervalIndex , self )._append_same_dtype (to_concat , name )
585594
586- @Appender (_index_shared_docs ['take' ])
595+ @Appender (_index_shared_docs ['take' ] % _index_doc_kwargs )
587596 def take (self , indices , axis = 0 , allow_fill = True ,
588597 fill_value = None , ** kwargs ):
589598 nv .validate_take (tuple (), kwargs )
0 commit comments