def test_requires_reindex(self) -> None: a = Index([1, 2, 3]) b = Index([1, 2, 3]) c = Index([1, 3, 2]) d = Index([1, 2, 3, 4]) e = Index(['a', 2, 3]) self.assertFalse(_requires_reindex(a, b)) self.assertTrue(_requires_reindex(a, c)) self.assertTrue(_requires_reindex(a, c)) self.assertTrue(_requires_reindex(a, d)) self.assertTrue(_requires_reindex(a, e))
def loc_to_iloc(self, key: tp.Union[GetItemKeyType, HLoc]) -> GetItemKeyType: ''' Given iterable of GetItemKeyTypes, apply to each level of levels. ''' from static_frame.core.series import Series if isinstance(key, Index): # if an Index, we simply use the values of the index key = key.values if isinstance(key, IndexHierarchy): return [ self._levels.leaf_loc_to_iloc(tuple(k)) for k in key.values ] if isinstance(key, Series): if key.dtype == bool: if _requires_reindex(key.index, self): key = key.reindex(self, fill_value=False).values else: # the index is equal key = key.values else: key = key.values # if an HLoc, will pass on to loc_to_iloc return self._levels.loc_to_iloc(key)
def loc_to_iloc(self, key: tp.Union[GetItemKeyType, HLoc]) -> GetItemKeyType: ''' Given iterable of GetItemKeyTypes, apply to each level of levels. ''' from static_frame.core.series import Series if isinstance(key, Index): # if an Index, we simply use the values of the index key = key.values if isinstance(key, Series): if key.dtype == bool: if _requires_reindex(key.index, self): key = key.reindex(self, fill_value=False).values else: # the index is equal print('requires reindex is False') key = key.values else: key = key.values return self._levels.loc_to_iloc(key)