先來幾句麥金尼著作里的話:
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 的功能。