Skip to content

BUG: astype(CategoricalDtype) has no effect #15078

Closed
@arita37

Description

@arita37

The following fails silently to convert the dtype:

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

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

In [16]: s.astype(pd.types.dtypes.CategoricalDtype)
Out[16]: 
0    a
1    b
2    c

I would think this either to work or either to raise an error that the dtype is not undertood.


Code Sample

When using dictionnary of dtype, it does not convert the dataframe :
Types are not modified whereas df['col']= df['col].astype(type1) works....

dtype0= {'brand': np.dtype('int64'),
 'category': np.dtype('int64'),
 'chain': np.dtype('int64'),
 'company': np.dtype('int64'),
 'date': np.dtype('O'),
 'dept':  pandas.types.dtypes.CategoricalDtype,
 'id': np.dtype('int64')}
df= df.astype(dtype0)
df.dtypes

Problem description

When using dictionnary of dtype, it does not convert the dataframe :
Types are not modified whereas df['col']= df['col].astype(type1) works....

Expected Output

columns are converted into the desire types.

Output of pd.show_versions()

Pandas 0.19.2

# Paste the output here pd.show_versions() here

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