Esempio n. 1
0
    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))
Esempio n. 2
0
    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)
Esempio n. 3
0
    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)