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

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

map方法:这里的map方法有点像mapreduce中的map()方法,具体的过程是将数据集中的每一个元素进行函数处理,如下:
| df['a'] add = lambda x:x+1 df['a'].map(add) |
既然有map() 我们不妨看一看有没有reduce(),他的效果又是怎样的:reduce:
| reduceData = df['a'].reduce(add) 报错:'Series' object has no attribute 'reduce' 再次尝试:
f = lambda x,y:x+y reduceData = functools.reduce(f,df['a']) reduceData 可以得到,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) 不正常
到底是为什么,留下来再试