pyspark.pandas.Series.cat.rename_categories

cat.rename_categories(new_categories: Union[list, dict, Callable], inplace: bool = False) → Optional[ps.Series]

Rename categories.

Parameters
new_categorieslist-like, dict-like or callable

New categories which will replace old categories.

  • list-like: all items must be unique and the number of items in the new categories must match the existing number of categories.

  • dict-like: specifies a mapping from old categories to new. Categories not contained in the mapping are passed through and extra categories in the mapping are ignored.

  • callable : a callable that is called on all items in the old categories and whose return values comprise the new categories.

inplacebool, default False

Whether or not to rename the categories inplace or return a copy of this categorical with renamed categories.

Returns
catSeries or None

Categorical with removed categories or None if inplace=True.

Raises
ValueError

If new categories are list-like and do not have the same number of items than the current categories or do not validate as categories

See also

reorder_categories

Reorder categories.

add_categories

Add new categories.

remove_categories

Remove the specified categories.

remove_unused_categories

Remove categories which are not used.

set_categories

Set the categories to the specified ones.

Examples

>>> s = ps.Series(["a", "a", "b"], dtype="category")
>>> s.cat.rename_categories([0, 1])  
0    0
1    0
2    1
dtype: category
Categories (2, int64): [0, 1]

For dict-like new_categories, extra keys are ignored and categories not in the dictionary are passed through

>>> s.cat.rename_categories({'a': 'A', 'c': 'C'})  
0    A
1    A
2    b
dtype: category
Categories (2, object): ['A', 'b']

You may also provide a callable to create the new categories

>>> s.cat.rename_categories(lambda x: x.upper())  
0    A
1    A
2    B
dtype: category
Categories (2, object): ['A', 'B']