Skip to main content
`Ctrl`+`K`

# pandas.CategoricalIndex.map

CategoricalIndex.map(mapper, na_action=None)

  Map values using input an input mapping or function.

  Maps the values (their categories, not the codes) of the index to new categories. If the mapping correspondence is one-to-one the result is a `CategoricalIndex` which has the same order property as the original, otherwise an `Index` is returned.

  If a dict or `Series` is used any unmapped category is mapped to NaN. Note that if this happens an `Index` will be returned.

  Parameters:
    mapper function, dict, or Series

      Mapping correspondence.

    na_action{None, ‘ignore’}, default ‘ignore’

      If ‘ignore’, propagate NaN values, without passing them to the mapping correspondence.

  Returns:
    pandas.CategoricalIndex or pandas.Index

      Mapped index.

  See also

  `Index.map`

    Apply a mapping correspondence on an `Index`.

  `Series.map`

    Apply a mapping correspondence on a `Series`.

  `Series.apply`

    Apply more complex functions on a `Series`.

  Examples

      >>> idx = pd.CategoricalIndex(["a", "b", "c"])
      >>> idx
      CategoricalIndex(['a', 'b', 'c'], categories=['a', 'b', 'c'],
                        ordered=False, dtype='category')
      >>> idx.map(lambda x: x.upper())
      CategoricalIndex(['A', 'B', 'C'], categories=['A', 'B', 'C'],
                       ordered=False, dtype='category')
      >>> idx.map({"a": "first", "b": "second", "c": "third"})
      CategoricalIndex(['first', 'second', 'third'], categories=['first',
                       'second', 'third'], ordered=False, dtype='category')

  If the mapping is one-to-one the ordering of the categories is preserved:

      >>> idx = pd.CategoricalIndex(["a", "b", "c"], ordered=True)
      >>> idx
      CategoricalIndex(['a', 'b', 'c'], categories=['a', 'b', 'c'],
                       ordered=True, dtype='category')
      >>> idx.map({"a": 3, "b": 2, "c": 1})
      CategoricalIndex([3, 2, 1], categories=[3, 2, 1], ordered=True,
                       dtype='category')

  If the mapping is not one-to-one an `Index` is returned:

      >>> idx.map({"a": "first", "b": "second", "c": "first"})
      Index(['first', 'second', 'first'], dtype='str')

  If a dict is used, all unmapped categories are mapped to NaN and the result is an `Index`:

      >>> idx.map({"a": "first", "b": "second"})
      Index(['first', 'second', nan], dtype='str')