From d8b770dfeb4ea05245ea0573f1d7b72d99b14dfd Mon Sep 17 00:00:00 2001 From: Brock Date: Fri, 23 Oct 2020 16:02:37 -0700 Subject: [PATCH] CLN: de-duplicate _isnan --- pandas/core/indexes/category.py | 5 ----- pandas/core/indexes/datetimelike.py | 2 +- pandas/core/indexes/extension.py | 4 ++++ pandas/core/indexes/interval.py | 13 ------------- 4 files changed, 5 insertions(+), 19 deletions(-) diff --git a/pandas/core/indexes/category.py b/pandas/core/indexes/category.py index ff014ac249fc3..ebe1ddb07cad0 100644 --- a/pandas/core/indexes/category.py +++ b/pandas/core/indexes/category.py @@ -377,11 +377,6 @@ def astype(self, dtype, copy=True): return Index.astype(self, dtype=dtype, copy=copy) - @cache_readonly - def _isnan(self): - """ return if each value is nan""" - return self._data.codes == -1 - @doc(Index.fillna) def fillna(self, value, downcast=None): value = self._validate_scalar(value) diff --git a/pandas/core/indexes/datetimelike.py b/pandas/core/indexes/datetimelike.py index 76d001d2f3ce6..863880e222b5d 100644 --- a/pandas/core/indexes/datetimelike.py +++ b/pandas/core/indexes/datetimelike.py @@ -78,7 +78,7 @@ def wrapper(left, right): @inherit_names( - ["inferred_freq", "_isnan", "_resolution_obj", "resolution"], + ["inferred_freq", "_resolution_obj", "resolution"], DatetimeLikeArrayMixin, cache=True, ) diff --git a/pandas/core/indexes/extension.py b/pandas/core/indexes/extension.py index c9367b7e2ee1d..4da1a43468b57 100644 --- a/pandas/core/indexes/extension.py +++ b/pandas/core/indexes/extension.py @@ -277,3 +277,7 @@ def astype(self, dtype, copy=True): # pass copy=False because any copying will be done in the # _data.astype call above return Index(new_values, dtype=new_values.dtype, name=self.name, copy=False) + + @cache_readonly + def _isnan(self) -> np.ndarray: + return self._data.isna() diff --git a/pandas/core/indexes/interval.py b/pandas/core/indexes/interval.py index cb25ef1241ce0..3ffb1160c14ce 100644 --- a/pandas/core/indexes/interval.py +++ b/pandas/core/indexes/interval.py @@ -37,7 +37,6 @@ is_object_dtype, is_scalar, ) -from pandas.core.dtypes.missing import isna from pandas.core.algorithms import take_1d from pandas.core.arrays.interval import IntervalArray, _interval_shared_docs @@ -192,9 +191,6 @@ class IntervalIndex(IntervalMixin, ExtensionIndex): # we would like our indexing holder to defer to us _defer_to_indexing = True - # Immutable, so we are able to cache computations like isna in '_mask' - _mask = None - _data: IntervalArray _values: IntervalArray @@ -342,15 +338,6 @@ def _shallow_copy( result._cache = self._cache return result - @cache_readonly - def _isnan(self): - """ - Return a mask indicating if each value is NA. - """ - if self._mask is None: - self._mask = isna(self.left) - return self._mask - @cache_readonly def _engine(self): left = self._maybe_convert_i8(self.left)