pandas 的 map()

  先来几句麦金尼著作里的话:

For many datasets, you may wish to perform some transformation based on the values in an array, Series, or column in a DataFrame.

The map method on a Series accepts a function or dict-like object containing a mapping.

Using map is a convenient way to perform element-wise transformations and other data cleaning–related operations.

 

使用 map 可以实现 Series 的元素级转换。

示例如下:

import pandas as pd

df = pd.DataFrame([['乔峰', 'I', 95, '降龙十八掌', '乞丐'],
                   ['虚竹', 'II', 93, '天上六阳掌', '和尚'],
                   ['段誉', 'II', 92, '六脉神剑', '王侯'],
                   ['包不同', 'V', 65, '胡搅蛮缠', '仆人'],
                   ['康敏', 'X', 10, '惑夫妒人', '坏女人']],
                   columns=['name', 'grade', 'score', 'skill', 'calss'])
df

输出为:

 

 定义一个 grade 的映射字典,转换 grade 列的罗马数字为阿拉伯数字

grade_mapping = {'I': 1, 'II': 2, 'III': 3, 'IV': 4, 'V': 5,
                 'VI': 6, 'VII': 7, 'VIII': 8, 'IX': 9, 'X': 10}
df.grade = df['grade'].map(grade_mapping)
df

输出如下:

 

 定义一个逆映射

inv_grade_mapping = dict((v, k) for k, v in grade_mapping.items())
inv_grade_mapping

输出如下:

 

 将 df 中的 grade重新转换过为罗马数字:

df.grade = df['grade'].map(inv_grade_mapping)
df

输出如下:

 

利用 pandas 的 map 方法就可以实现类似 R语言里 factor 的功能。

 

posted @ 2019-06-19 22:24  赏尔  阅读(2296)  评论(0编辑  收藏  举报