diff --git a/pandas/core/arrays/datetimelike.py b/pandas/core/arrays/datetimelike.py index 0ce32fcd822e0..ec36e53b97b3c 100644 --- a/pandas/core/arrays/datetimelike.py +++ b/pandas/core/arrays/datetimelike.py @@ -1554,6 +1554,9 @@ def ceil(self, freq, ambiguous="raise", nonexistent="raise"): # -------------------------------------------------------------- # Frequency Methods + def _maybe_clear_freq(self): + self._freq = None + def _with_freq(self, freq): """ Helper to get a view on the same data, with a new freq. diff --git a/pandas/core/arrays/datetimes.py b/pandas/core/arrays/datetimes.py index a05dc717f83c1..b9a6df10d3630 100644 --- a/pandas/core/arrays/datetimes.py +++ b/pandas/core/arrays/datetimes.py @@ -474,9 +474,6 @@ def _check_compatible_with(self, other, setitem: bool = False): if not timezones.tz_compare(self.tz, other.tz): raise ValueError(f"Timezones don't match. '{self.tz}' != '{other.tz}'") - def _maybe_clear_freq(self): - self._freq = None - # ----------------------------------------------------------------- # Descriptive Properties diff --git a/pandas/core/arrays/timedeltas.py b/pandas/core/arrays/timedeltas.py index d9ecbc874cd59..035e6e84c6ec8 100644 --- a/pandas/core/arrays/timedeltas.py +++ b/pandas/core/arrays/timedeltas.py @@ -313,9 +313,6 @@ def _check_compatible_with(self, other, setitem: bool = False): # we don't have anything to validate. pass - def _maybe_clear_freq(self): - self._freq = None - # ---------------------------------------------------------------- # Array-Like / EA-Interface Methods diff --git a/pandas/core/indexes/datetimelike.py b/pandas/core/indexes/datetimelike.py index 40a6086f69f85..176fef13094fd 100644 --- a/pandas/core/indexes/datetimelike.py +++ b/pandas/core/indexes/datetimelike.py @@ -104,6 +104,16 @@ class DatetimeIndexOpsMixin(NDArrayBackedExtensionIndex): def _is_all_dates(self) -> bool: return True + def _shallow_copy(self, values=None, name: Label = lib.no_default): + name = self.name if name is lib.no_default else name + + if values is not None: + return self._simple_new(values, name=name) + + result = self._simple_new(self._data, name=name) + result._cache = self._cache + return result + # ------------------------------------------------------------------------ # Abstract data attributes @@ -662,16 +672,6 @@ def _with_freq(self, freq): arr = self._data._with_freq(freq) return type(self)._simple_new(arr, name=self.name) - def _shallow_copy(self, values=None, name: Label = lib.no_default): - name = self.name if name is lib.no_default else name - - if values is not None: - return self._simple_new(values, name=name) - - result = self._simple_new(self._data, name=name) - result._cache = self._cache - return result - # -------------------------------------------------------------------- # Set Operation Methods diff --git a/pandas/core/indexes/period.py b/pandas/core/indexes/period.py index 44c20ad0de848..cff50bf0f1eab 100644 --- a/pandas/core/indexes/period.py +++ b/pandas/core/indexes/period.py @@ -4,7 +4,6 @@ import numpy as np from pandas._libs import index as libindex -from pandas._libs.lib import no_default from pandas._libs.tslibs import BaseOffset, Period, Resolution, Tick from pandas._libs.tslibs.parsing import DateParseError, parse_time_string from pandas._typing import DtypeObj, Label @@ -278,16 +277,6 @@ def _has_complex_internals(self) -> bool: # used to avoid libreduction code paths, which raise or require conversion return True - def _shallow_copy(self, values=None, name: Label = no_default): - name = name if name is not no_default else self.name - - if values is not None: - return self._simple_new(values, name=name) - - result = self._simple_new(self._data, name=name) - result._cache = self._cache - return result - def _maybe_convert_timedelta(self, other): """ Convert timedelta-like input to an integer multiple of self.freq @@ -341,7 +330,7 @@ def _mpl_repr(self): @property def _formatter_func(self): - return self.array._formatter(boxed=False) + return self._data._formatter(boxed=False) # ------------------------------------------------------------------------ # Indexing diff --git a/pandas/core/indexes/timedeltas.py b/pandas/core/indexes/timedeltas.py index cf5fa4bbb3d75..84390822813cd 100644 --- a/pandas/core/indexes/timedeltas.py +++ b/pandas/core/indexes/timedeltas.py @@ -175,9 +175,7 @@ def _simple_new(cls, values: TimedeltaArray, name: Label = None): @property def _formatter_func(self): - from pandas.io.formats.format import get_format_timedelta64 - - return get_format_timedelta64(self, box=True) + return self._data._formatter() # -------------------------------------------------------------------