@@ -133,8 +133,7 @@ def __new__(cls, data=None, categories=None, ordered=None, dtype=None,
133
133
134
134
return cls ._simple_new (data , name = name )
135
135
136
- def _create_from_codes (self , codes , categories = None , ordered = None ,
137
- name = None ):
136
+ def _create_from_codes (self , codes , dtype = None , name = None ):
138
137
"""
139
138
*this is an internal non-public method*
140
139
@@ -143,23 +142,20 @@ def _create_from_codes(self, codes, categories=None, ordered=None,
143
142
Parameters
144
143
----------
145
144
codes : new codes
146
- categories : optional categories, defaults to existing
147
- ordered : optional ordered attribute, defaults to existing
145
+ dtype: CategoricalDtype, defaults to existing
148
146
name : optional name attribute, defaults to existing
149
147
150
148
Returns
151
149
-------
152
150
CategoricalIndex
153
151
"""
154
152
155
- if categories is None :
156
- categories = self .categories
157
- if ordered is None :
158
- ordered = self .ordered
153
+ if dtype is None :
154
+ dtype = self .dtype
159
155
if name is None :
160
156
name = self .name
161
- cat = Categorical .from_codes (codes , categories = categories ,
162
- ordered = ordered )
157
+ cat = Categorical .from_codes (codes , categories = dtype . categories ,
158
+ ordered = dtype . ordered )
163
159
return CategoricalIndex (cat , name = name )
164
160
165
161
@classmethod
@@ -201,12 +197,10 @@ def _create_categorical(cls, data, categories=None, ordered=None,
201
197
return data
202
198
203
199
@classmethod
204
- def _simple_new (cls , values , name = None , categories = None , ordered = None ,
205
- dtype = None , ** kwargs ):
200
+ def _simple_new (cls , values , name = None , dtype = None , ** kwargs ):
206
201
result = object .__new__ (cls )
207
202
208
- values = cls ._create_categorical (values , categories , ordered ,
209
- dtype = dtype )
203
+ values = cls ._create_categorical (values , dtype = dtype )
210
204
result ._data = values
211
205
result .name = name
212
206
for k , v in compat .iteritems (kwargs ):
@@ -218,29 +212,11 @@ def _simple_new(cls, values, name=None, categories=None, ordered=None,
218
212
# --------------------------------------------------------------------
219
213
220
214
@Appender (_index_shared_docs ['_shallow_copy' ])
221
- def _shallow_copy (self , values = None , categories = None , ordered = None ,
222
- dtype = None , ** kwargs ):
223
- # categories and ordered can't be part of attributes,
224
- # as these are properties
225
- # we want to reuse self.dtype if possible, i.e. neither are
226
- # overridden.
227
- if dtype is not None and (categories is not None or
228
- ordered is not None ):
229
- raise TypeError ("Cannot specify both `dtype` and `categories` "
230
- "or `ordered`" )
231
-
232
- if categories is None and ordered is None :
233
- dtype = self .dtype if dtype is None else dtype
234
- return super (CategoricalIndex , self )._shallow_copy (
235
- values = values , dtype = dtype , ** kwargs )
236
- if categories is None :
237
- categories = self .categories
238
- if ordered is None :
239
- ordered = self .ordered
240
-
215
+ def _shallow_copy (self , values = None , dtype = None , ** kwargs ):
216
+ if dtype is None :
217
+ dtype = self .dtype
241
218
return super (CategoricalIndex , self )._shallow_copy (
242
- values = values , categories = categories ,
243
- ordered = ordered , ** kwargs )
219
+ values = values , dtype = dtype , ** kwargs )
244
220
245
221
def _is_dtype_compat (self , other ):
246
222
"""
@@ -425,10 +401,9 @@ def unique(self, level=None):
425
401
if level is not None :
426
402
self ._validate_index_level (level )
427
403
result = self .values .unique ()
428
- # CategoricalIndex._shallow_copy keeps original categories
429
- # and ordered if not otherwise specified
430
- return self ._shallow_copy (result , categories = result .categories ,
431
- ordered = result .ordered )
404
+ # CategoricalIndex._shallow_copy keeps original dtype
405
+ # if not otherwise specified
406
+ return self ._shallow_copy (result , dtype = result .dtype )
432
407
433
408
@Appender (Index .duplicated .__doc__ )
434
409
def duplicated (self , keep = 'first' ):
0 commit comments