Skip to content

BUG: astype('category', categories=...) failes on a series of categorical type #10696

Closed
@jorisvandenbossche

Description

@jorisvandenbossche

s.astype('category', categories=['a', 'b', 'c']) fails when the series is already of Categorical dtype:

TypeError: _astype() got an unexpected keyword argument 'categories'

I am not sure if this should work (it would then be equivalent to set_categories?), but in any case the current error message is not informative:

In [49]: s = pd.Series(['a', 'b', 'a'])

In [50]: s
Out[50]:
0    a
1    b
2    a
dtype: object

In [51]: s.astype('category')
Out[51]:
0    a
1    b
2    a
dtype: category
Categories (2, object): [a, b]

In [52]: s.astype('category', categories=['a', 'b', 'c'])
Out[52]:
0    a
1    b
2    a
dtype: category
Categories (3, object): [a, b, c]

In [53]: scat = s.astype('category')

In [54]: scat.astype('category', categories=['a', 'b', 'c'])
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-54-f955e6286a85> in <module>()
----> 1 scat.astype('category', categories=['a', 'b', 'c'])

c:\users\vdbosscj\scipy\pandas-joris\pandas\core\generic.pyc in astype(self, dty
pe, copy, raise_on_error, **kwargs)
   2415
   2416         mgr = self._data.astype(
-> 2417             dtype=dtype, copy=copy, raise_on_error=raise_on_error, **kwa
rgs)
   2418         return self._constructor(mgr).__finalize__(self)
   2419

c:\users\vdbosscj\scipy\pandas-joris\pandas\core\internals.pyc in astype(self, d
type, **kwargs)
   2516
   2517     def astype(self, dtype, **kwargs):
-> 2518         return self.apply('astype', dtype=dtype, **kwargs)
   2519
   2520     def convert(self, **kwargs):

c:\users\vdbosscj\scipy\pandas-joris\pandas\core\internals.pyc in apply(self, f,
 axes, filter, do_integrity_check, **kwargs)
   2471                                                  copy=align_copy)
   2472
-> 2473             applied = getattr(b, f)(**kwargs)
   2474
   2475             if isinstance(applied, list):

c:\users\vdbosscj\scipy\pandas-joris\pandas\core\internals.pyc in astype(self, d
type, copy, raise_on_error, values, **kwargs)
    371     def astype(self, dtype, copy=False, raise_on_error=True, values=None
, **kwargs):
    372         return self._astype(dtype, copy=copy, raise_on_error=raise_on_er
ror,
--> 373                             values=values, **kwargs)
    374
    375     def _astype(self, dtype, copy=False, raise_on_error=True, values=Non
e,

TypeError: _astype() got an unexpected keyword argument 'categories'

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions