pandas.Categorical.map#
- Categorical.map(mapper, na_action=None)[源代码][源代码]#
使用输入映射或函数映射类别。
将类别映射到新类别。如果映射对应是一对一的,结果是一个与原始类别具有相同顺序属性的
Categorical
,否则返回一个Index
。NaN 值不受影响。如果使用 dict 或
Series
,任何未映射的类别都将映射到 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')