python pandas.map apply applymap 三种方法小结

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

pandas包的apply方法表示对DataFrame中的每一列元素应用函数。比如:

同时也可以在行方向做运算:

map方法:这里的map方法有点像mapreduce中的map()方法,具体的过程是将数据集中的每一个元素进行函数处理,如下:

df['a']





Name: a, dtype: float64

add = lambda x:x+1

df['a'].map(add)





Name: a, dtype: float64

既然有map() 我们不妨看一看有没有reduce(),他的效果又是怎样的:reduce:

reduceData = df['a'].reduce(add)

报错:'Series' object has no attribute 'reduce'

再次尝试:


df['a']





Name: a, dtype: float64

f = lambda x,y:x+y

reduceData = functools.reduce(f,df['a'])

reduceData
Out[28]: -2.659379404636298

可以得到,reduce在pandas中没有,在functools包中,主要的操作过程是:

format = lambda x:'%.2f'%x

df.applymap(format)





可以得出:map是以行或者列为单位,series的角度下进行操作,或加或减等等只影响一部分数据

最后有一个小实验:

已知:f = lambda x:x.max()-x.min()

add = lambda x:x+1

f = lambda x,y:x+y

format = lambda x:'%.2f'%x

df.applymap(add) 正常,为数据框的值加1,

df.apply(add) 正常,为数据框的值加1,

df.applymap(f) 不正常

到底是为什么,留下来再试

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