@@ -1979,7 +1979,9 @@ def _ixs(self, i, axis=0, copy=False):
19791979 else :
19801980 label = self .index [i ]
19811981 if isinstance (label , Index ):
1982- return self .reindex (label )
1982+
1983+ # a location index by definition
1984+ return self .reindex (label , takeable = True )
19831985 else :
19841986 try :
19851987 new_values = self ._data .fast_2d_xs (i , copy = copy )
@@ -2590,7 +2592,7 @@ def _align_series(self, other, join='outer', axis=None, level=None,
25902592 return left_result , right_result
25912593
25922594 def reindex (self , index = None , columns = None , method = None , level = None ,
2593- fill_value = NA , limit = None , copy = True ):
2595+ fill_value = NA , limit = None , copy = True , takeable = False ):
25942596 """Conform DataFrame to new index with optional filling logic, placing
25952597 NA/NaN in locations having no value in the previous index. A new object
25962598 is produced unless the new index is equivalent to the current one and
@@ -2617,6 +2619,7 @@ def reindex(self, index=None, columns=None, method=None, level=None,
26172619 "compatible" value
26182620 limit : int, default None
26192621 Maximum size gap to forward or backward fill
2622+ takeable : the labels are locations (and not labels)
26202623
26212624 Examples
26222625 --------
@@ -2636,11 +2639,11 @@ def reindex(self, index=None, columns=None, method=None, level=None,
26362639
26372640 if columns is not None :
26382641 frame = frame ._reindex_columns (columns , copy , level ,
2639- fill_value , limit )
2642+ fill_value , limit , takeable )
26402643
26412644 if index is not None :
26422645 frame = frame ._reindex_index (index , method , copy , level ,
2643- fill_value , limit )
2646+ fill_value , limit , takeable )
26442647
26452648 return frame
26462649
@@ -2717,16 +2720,18 @@ def _reindex_multi(self, new_index, new_columns, copy, fill_value):
27172720 return self .copy () if copy else self
27182721
27192722 def _reindex_index (self , new_index , method , copy , level , fill_value = NA ,
2720- limit = None ):
2723+ limit = None , takeable = False ):
27212724 new_index , indexer = self .index .reindex (new_index , method , level ,
2722- limit = limit , copy_if_needed = True )
2725+ limit = limit , copy_if_needed = True ,
2726+ takeable = takeable )
27232727 return self ._reindex_with_indexers (new_index , indexer , None , None ,
27242728 copy , fill_value )
27252729
27262730 def _reindex_columns (self , new_columns , copy , level , fill_value = NA ,
2727- limit = None ):
2731+ limit = None , takeable = False ):
27282732 new_columns , indexer = self .columns .reindex (new_columns , level = level ,
2729- limit = limit , copy_if_needed = True )
2733+ limit = limit , copy_if_needed = True ,
2734+ takeable = takeable )
27302735 return self ._reindex_with_indexers (None , None , new_columns , indexer ,
27312736 copy , fill_value )
27322737
0 commit comments