Skip to content

Commit 3007baf

Browse files
authored
CLN: remove CategoricalIndex._create_from_codes (#36342)
1 parent 752cd42 commit 3007baf

File tree

2 files changed

+15
-37
lines changed

2 files changed

+15
-37
lines changed

pandas/core/arrays/categorical.py

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1376,7 +1376,7 @@ def value_counts(self, dropna=True):
13761376
count = np.bincount(np.where(mask, code, ncat))
13771377
ix = np.append(ix, -1)
13781378

1379-
ix = self._constructor(ix, dtype=self.dtype, fastpath=True)
1379+
ix = self._from_backing_data(ix)
13801380

13811381
return Series(count, index=CategoricalIndex(ix), dtype="int64")
13821382

@@ -1546,9 +1546,8 @@ def sort_values(
15461546
if inplace:
15471547
self._codes = self._codes[sorted_idx]
15481548
else:
1549-
return self._constructor(
1550-
values=self._codes[sorted_idx], dtype=self.dtype, fastpath=True
1551-
)
1549+
codes = self._codes[sorted_idx]
1550+
return self._from_backing_data(codes)
15521551

15531552
def _values_for_rank(self):
15541553
"""
@@ -1583,7 +1582,7 @@ def _values_for_rank(self):
15831582
def view(self, dtype=None):
15841583
if dtype is not None:
15851584
raise NotImplementedError(dtype)
1586-
return self._constructor(values=self._codes, dtype=self.dtype, fastpath=True)
1585+
return self._from_backing_data(self._ndarray)
15871586

15881587
def to_dense(self):
15891588
"""
@@ -1691,7 +1690,7 @@ def fillna(self, value=None, method=None, limit=None):
16911690
f"or Series, but you passed a {type(value).__name__}"
16921691
)
16931692

1694-
return self._constructor(codes, dtype=self.dtype, fastpath=True)
1693+
return self._from_backing_data(codes)
16951694

16961695
# ------------------------------------------------------------------
16971696
# NDArrayBackedExtensionArray compat
@@ -2098,7 +2097,7 @@ def mode(self, dropna=True):
20982097
good = self._codes != -1
20992098
codes = self._codes[good]
21002099
codes = sorted(htable.mode_int64(ensure_int64(codes), dropna))
2101-
return self._constructor(values=codes, dtype=self.dtype, fastpath=True)
2100+
return self._from_backing_data(codes)
21022101

21032102
# ------------------------------------------------------------------
21042103
# ExtensionArray Interface

pandas/core/indexes/category.py

Lines changed: 9 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -211,29 +211,6 @@ def __new__(
211211

212212
return cls._simple_new(data, name=name)
213213

214-
def _create_from_codes(self, codes, dtype=None, name=None):
215-
"""
216-
*this is an internal non-public method*
217-
218-
create the correct categorical from codes
219-
220-
Parameters
221-
----------
222-
codes : new codes
223-
dtype: CategoricalDtype, defaults to existing
224-
name : optional name attribute, defaults to existing
225-
226-
Returns
227-
-------
228-
CategoricalIndex
229-
"""
230-
if dtype is None:
231-
dtype = self.dtype
232-
if name is None:
233-
name = self.name
234-
cat = Categorical.from_codes(codes, dtype=dtype)
235-
return CategoricalIndex(cat, name=name)
236-
237214
@classmethod
238215
def _simple_new(cls, values: Categorical, name: Label = None):
239216
assert isinstance(values, Categorical), type(values)
@@ -495,7 +472,8 @@ def reindex(self, target, method=None, level=None, limit=None, tolerance=None):
495472

496473
codes = new_target.codes.copy()
497474
codes[indexer == -1] = cats[missing]
498-
new_target = self._create_from_codes(codes)
475+
cat = self._data._from_backing_data(codes)
476+
new_target = type(self)._simple_new(cat, name=self.name)
499477

500478
# we always want to return an Index type here
501479
# to be consistent with .reindex for other index types (e.g. they don't
@@ -695,7 +673,9 @@ def delete(self, loc):
695673
-------
696674
new_index : Index
697675
"""
698-
return self._create_from_codes(np.delete(self.codes, loc))
676+
codes = np.delete(self.codes, loc)
677+
cat = self._data._from_backing_data(codes)
678+
return type(self)._simple_new(cat, name=self.name)
699679

700680
def insert(self, loc: int, item):
701681
"""
@@ -720,15 +700,14 @@ def insert(self, loc: int, item):
720700

721701
codes = self.codes
722702
codes = np.concatenate((codes[:loc], [code], codes[loc:]))
723-
return self._create_from_codes(codes)
703+
cat = self._data._from_backing_data(codes)
704+
return type(self)._simple_new(cat, name=self.name)
724705

725706
def _concat(self, to_concat, name):
726707
# if calling index is category, don't check dtype of others
727708
codes = np.concatenate([self._is_dtype_compat(c).codes for c in to_concat])
728-
result = self._create_from_codes(codes, name=name)
729-
# if name is None, _create_from_codes sets self.name
730-
result.name = name
731-
return result
709+
cat = self._data._from_backing_data(codes)
710+
return type(self)._simple_new(cat, name=name)
732711

733712
def _delegate_method(self, name: str, *args, **kwargs):
734713
""" method delegation to the ._values """

0 commit comments

Comments
 (0)