@@ -211,29 +211,6 @@ def __new__(
211
211
212
212
return cls ._simple_new (data , name = name )
213
213
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
-
237
214
@classmethod
238
215
def _simple_new (cls , values : Categorical , name : Label = None ):
239
216
assert isinstance (values , Categorical ), type (values )
@@ -495,7 +472,8 @@ def reindex(self, target, method=None, level=None, limit=None, tolerance=None):
495
472
496
473
codes = new_target .codes .copy ()
497
474
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 )
499
477
500
478
# we always want to return an Index type here
501
479
# to be consistent with .reindex for other index types (e.g. they don't
@@ -695,7 +673,9 @@ def delete(self, loc):
695
673
-------
696
674
new_index : Index
697
675
"""
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 )
699
679
700
680
def insert (self , loc : int , item ):
701
681
"""
@@ -720,15 +700,14 @@ def insert(self, loc: int, item):
720
700
721
701
codes = self .codes
722
702
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 )
724
705
725
706
def _concat (self , to_concat , name ):
726
707
# if calling index is category, don't check dtype of others
727
708
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 )
732
711
733
712
def _delegate_method (self , name : str , * args , ** kwargs ):
734
713
""" method delegation to the ._values """
0 commit comments