Python中apply,map,applymap总结
pandas中DataFrame 数据类型,使用map,apply方法使用较多,做一下总结。参考https://www.cnblogs.com/cymwill/p/7577369.html
总结:
- apply 用在dataframe上,用于对row或者column进行计算;
- applymap 用于dataframe上,是元素级别的操作;
- map (其实是python自带的)用于series上,是元素级别的操作。
df = pd.DataFrame(np.random.randint(0,10,(4, 3)), columns=list('bde'), index=range(4))
df
b d e
0 4 9 3
1 3 1 0
2 4 8 0
3 2 9 9
apply:作用在dataframe的一行或一列上,也可以作用在series上
定义一个函数,
f = lambda x: x.max() - x.min()
这个函数可以结合apply作用在DataFrame类型的行或者列上
# 和加上axis = 0 ,默认是作用在列上
df.apply(f)
b 2
d 8
e 9
dtype: int64
# axis = 1 ,默认是作用在行上
df.apply(f,axis =1)
0 6
1 3
2 8
3 7
dtype: int64
关于apply 传入多参数
def test(a,b):
return a,b
df['d'].apply(test,args=('ok',))
# args只能传入(元组)
0 (9, ok)
1 (1, ok)
2 (8, ok)
3 (9, ok)
Name: d, dtype: object
applymap: 作用在dataframe的每一个元素上
定义f2函数
f2 = lambda x: x+1 if x%2==0 else x
applymap 会将函数作用在DataFrame每一个元素上
df.applymap(f2)
b d e
0 5 9 3
1 3 1 1
2 5 9 1
3 3 9 9
map:作用将函数作用于一个Series的每一个元素
df['b'].map(f2)
0 5
1 3
2 5
3 3
Name: b, dtype: int64