From 3a1ee6f5141526c4c3506b80f14ee9d1b7c15200 Mon Sep 17 00:00:00 2001 From: Brock Mendel Date: Tue, 7 Jan 2020 08:30:45 -0800 Subject: [PATCH] REV: move unique, _get_unique_index to ExtensionIndex --- pandas/core/indexes/datetimelike.py | 11 ----------- pandas/core/indexes/extension.py | 16 ++++++++++++++++ pandas/core/indexes/period.py | 9 --------- 3 files changed, 16 insertions(+), 20 deletions(-) diff --git a/pandas/core/indexes/datetimelike.py b/pandas/core/indexes/datetimelike.py index 3a58794a8b19e..9f0a6994d66ad 100644 --- a/pandas/core/indexes/datetimelike.py +++ b/pandas/core/indexes/datetimelike.py @@ -110,17 +110,6 @@ class DatetimeIndexOpsMixin(ExtensionIndex, ExtensionOpsMixin): def is_all_dates(self) -> bool: return True - def unique(self, level=None): - if level is not None: - self._validate_index_level(level) - - result = self._data.unique() - - # Note: if `self` is already unique, then self.unique() should share - # a `freq` with self. If not already unique, then self.freq must be - # None, so again sharing freq is correct. - return self._shallow_copy(result._data) - @classmethod def _create_comparison_method(cls, op): """ diff --git a/pandas/core/indexes/extension.py b/pandas/core/indexes/extension.py index 6f581c4ebb594..f0f407e9e8308 100644 --- a/pandas/core/indexes/extension.py +++ b/pandas/core/indexes/extension.py @@ -176,3 +176,19 @@ def take(self, indices, axis=0, allow_fill=True, fill_value=None, **kwargs): na_value=self._na_value, ) return type(self)(taken, name=self.name) + + def unique(self, level=None): + if level is not None: + self._validate_index_level(level) + + result = self._data.unique() + return self._shallow_copy(result) + + def _get_unique_index(self, dropna=False): + if self.is_unique and not dropna: + return self + + result = self._data.unique() + if dropna and self.hasnans: + result = result[~result.isna()] + return self._shallow_copy(result) diff --git a/pandas/core/indexes/period.py b/pandas/core/indexes/period.py index 6ba778bc83dd1..1fed0201f7b2b 100644 --- a/pandas/core/indexes/period.py +++ b/pandas/core/indexes/period.py @@ -583,15 +583,6 @@ def get_indexer_non_unique(self, target): indexer, missing = self._int64index.get_indexer_non_unique(target) return ensure_platform_int(indexer), missing - def _get_unique_index(self, dropna=False): - if self.is_unique and not dropna: - return self - - result = self._data.unique() - if dropna and self.hasnans: - result = result[~result.isna()] - return self._shallow_copy(result) - def get_loc(self, key, method=None, tolerance=None): """ Get integer location for requested label