对pandas中Series的map函数详解
作者:晓东邪
今天小编就为大家分享一篇对pandas中Series的map函数详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
Series的map方法可以接受一个函数或含有映射关系的字典型对象。
使用map是一种实现元素级转换以及其他数据清理工作的便捷方式。
(DataFrame中对应的是applymap()函数,当然DataFrame还有apply()函数)
1、字典映射
import pandas as pd from pandas import Series, DataFrame data = 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'].map(str.lower).map(meat_to_animal) data data['food'].map(lambda x: meat_to_animal[x.lower()])
2、应用函数
In [579]: import pandas as pd In [580]: from pandas import Series, DataFrame In [581]: index = pd.date_range('2017-08-15', periods=10) In [582]: ser = Series(list(range(10)), index=index) In [583]: ser Out[583]: 2017-08-15 0 2017-08-16 1 2017-08-17 2 2017-08-18 3 2017-08-19 4 2017-08-20 5 2017-08-21 6 2017-08-22 7 2017-08-23 8 2017-08-24 9 Freq: D, dtype: int64 In [585]: ser.index.map(lambda x: x.day) Out[585]: Int64Index([15, 16, 17, 18, 19, 20, 21, 22, 23, 24], dtype='int64') In [586]: ser.index.map(lambda x: x.weekday) Out[586]: Int64Index([1, 2, 3, 4, 5, 6, 0, 1, 2, 3], dtype='int64') In [587]: ser.map(lambda x: x+10) Out[587]: 2017-08-15 10 2017-08-16 11 2017-08-17 12 2017-08-18 13 2017-08-19 14 2017-08-20 15 2017-08-21 16 2017-08-22 17 2017-08-23 18 2017-08-24 19 Freq: D, dtype: int64 In [588]: def f(x): ...: if x < 5: ...: return True ...: else: ...: return False ...: In [589]: ser.map(f) Out[589]: 2017-08-15 True 2017-08-16 True 2017-08-17 True 2017-08-18 True 2017-08-19 True 2017-08-20 False 2017-08-21 False 2017-08-22 False 2017-08-23 False 2017-08-24 False Freq: D, dtype: bool
以上这篇对pandas中Series的map函数详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。