python:数据预处理 - 数据转换 - 使用映射、函数添加列

匿名 (未验证) 提交于 2019-12-02 22:11:45

Q: 如果有A->B的对应表1(映射),怎么对数据表2自动匹配&添加到数据最后一列?

A:使用.map()函数。

《Python for Data Analysis, 2nd Edition》by Wes McKinney

举例: 请 在表“食物表”的基础上,添加每种食物对应的来源。










映射关系:

bacon -> pig

pastrami -> cow

corned beef -> cow

honey ham -> pig

nova lox -> salmon

实现方法:

 import pandas as pd  data = pd.DataFrame({'food': ['bacon', 'pulled pork', 'bacon', 'Pastrami', 'corned beef', 'Bacon', 'pastrami', 'honey ham', 'nova lox'],                      'ounces': [4, 3, 12, 6, 7.5, 8, 3, 5, 6]})  # 建立映射关系 meat_to_animal = {'bacon': 'pig',                   'pulled pork': 'pig',                   'pastrami': 'cow',                   'corned beef': 'cow',                   'honey ham': 'pig',                   'nova lox': 'salmon'}  # 使用映射关系,添加食物所对应的动物 data['animal'] = data['food'].str.lower().map(meat_to_animal)   # 可分为两步  # lowercased = data['food'].str.lower() # data['animal'] = lowercased.map(meant_to_animal)  print(data)

注: data['animal'] = data['food'在“映射表”不全的情况下也能正常运行,取值NaN,比入'pulled pork': 'pig' 替换为

data['food'].map(lambda x: meat_to_animal[x.lower()])在“映射表”不全的情况下报错。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!