pandas.CategoricalIndex.map#

CategoricalIndex.map(mapper, na_action=None)[源代码][源代码]#

使用输入映射或函数映射值。

将索引的值(它们的类别,不是代码)映射到新的类别。如果映射对应是一对一的,结果是一个具有与原始索引相同顺序属性的 CategoricalIndex ,否则返回一个 Index

如果使用 dictSeries ,任何未映射的类别都将映射到 NaN。请注意,如果发生这种情况,将返回一个 Index

参数:
mapper函数, 字典, 或 系列

映射对应关系。

na_action{None, ‘ignore’}, 默认 ‘ignore’

如果为 ‘ignore’,则传播 NaN 值,而不将它们传递给映射对应关系。

返回:
pandas.CategoricalIndex 或 pandas.Index

映射索引。

参见

Index.map

Index 上应用映射对应关系。

Series.map

Series 上应用映射对应关系。

Series.apply

Series 上应用更复杂的函数。

例子

>>> 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')

如果映射是一对一的,类别的顺序将被保留:

>>> 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')

如果映射不是一对一的,则返回一个 Index

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

如果使用 dict ,所有未映射的类别都被映射到 NaN ,结果是一个 Index

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