pandas.Categorical.map#

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

使用输入映射或函数映射类别。

将类别映射到新类别。如果映射对应是一对一的,结果是一个与原始类别具有相同顺序属性的 Categorical ,否则返回一个 Index 。NaN 值不受影响。

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

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

映射对应关系。

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

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

返回:
pandas.Categorical 或 pandas.Index

映射的分类。

参见

CategoricalIndex.map

CategoricalIndex 上应用映射对应关系。

Index.map

Index 上应用映射对应关系。

Series.map

Series 上应用映射对应关系。

Series.apply

Series 上应用更复杂的函数。

例子

>>> cat = pd.Categorical(["a", "b", "c"])
>>> cat
['a', 'b', 'c']
Categories (3, object): ['a', 'b', 'c']
>>> cat.map(lambda x: x.upper(), na_action=None)
['A', 'B', 'C']
Categories (3, object): ['A', 'B', 'C']
>>> cat.map({"a": "first", "b": "second", "c": "third"}, na_action=None)
['first', 'second', 'third']
Categories (3, object): ['first', 'second', 'third']

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

>>> cat = pd.Categorical(["a", "b", "c"], ordered=True)
>>> cat
['a', 'b', 'c']
Categories (3, object): ['a' < 'b' < 'c']
>>> cat.map({"a": 3, "b": 2, "c": 1}, na_action=None)
[3, 2, 1]
Categories (3, int64): [3 < 2 < 1]

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

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

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

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