Skip to content

Commit e0b93ad

Browse files
jbrockmendeljreback
authored andcommitted
REV: move unique, _get_unique_index to ExtensionIndex (#30786)
1 parent be1556c commit e0b93ad

File tree

3 files changed

+16
-20
lines changed

3 files changed

+16
-20
lines changed

pandas/core/indexes/datetimelike.py

-11
Original file line numberDiff line numberDiff line change
@@ -110,17 +110,6 @@ class DatetimeIndexOpsMixin(ExtensionIndex, ExtensionOpsMixin):
110110
def is_all_dates(self) -> bool:
111111
return True
112112

113-
def unique(self, level=None):
114-
if level is not None:
115-
self._validate_index_level(level)
116-
117-
result = self._data.unique()
118-
119-
# Note: if `self` is already unique, then self.unique() should share
120-
# a `freq` with self. If not already unique, then self.freq must be
121-
# None, so again sharing freq is correct.
122-
return self._shallow_copy(result._data)
123-
124113
@classmethod
125114
def _create_comparison_method(cls, op):
126115
"""

pandas/core/indexes/extension.py

+16
Original file line numberDiff line numberDiff line change
@@ -176,3 +176,19 @@ def take(self, indices, axis=0, allow_fill=True, fill_value=None, **kwargs):
176176
na_value=self._na_value,
177177
)
178178
return type(self)(taken, name=self.name)
179+
180+
def unique(self, level=None):
181+
if level is not None:
182+
self._validate_index_level(level)
183+
184+
result = self._data.unique()
185+
return self._shallow_copy(result)
186+
187+
def _get_unique_index(self, dropna=False):
188+
if self.is_unique and not dropna:
189+
return self
190+
191+
result = self._data.unique()
192+
if dropna and self.hasnans:
193+
result = result[~result.isna()]
194+
return self._shallow_copy(result)

pandas/core/indexes/period.py

-9
Original file line numberDiff line numberDiff line change
@@ -583,15 +583,6 @@ def get_indexer_non_unique(self, target):
583583
indexer, missing = self._int64index.get_indexer_non_unique(target)
584584
return ensure_platform_int(indexer), missing
585585

586-
def _get_unique_index(self, dropna=False):
587-
if self.is_unique and not dropna:
588-
return self
589-
590-
result = self._data.unique()
591-
if dropna and self.hasnans:
592-
result = result[~result.isna()]
593-
return self._shallow_copy(result)
594-
595586
def get_loc(self, key, method=None, tolerance=None):
596587
"""
597588
Get integer location for requested label

0 commit comments

Comments
 (0)