【Python】Pandas中的宝藏函数-applymap

机器学习初学者

共 2267字,需浏览 5分钟

 ·

2021-08-10 02:54

applymap的用法比较简单,会对DataFrame中的每个单元格执行指定函数的操作,虽然用途不如apply广泛,但在某些场合下还是非常有用的。


 

applymap()是与map()方法相对应的专属于DataFrame对象的方法,类似map()方法传入函数、字典等,传入对应的输出结果。

 

不同的是applymap()将传入的函数等作用于整个数据框中每一个位置的元素,因此其返回结果的形状与原数据框一致。


关联阅读:

Pandas中的宝藏函数-map

Pandas中的宝藏函数-apply


 

语 法:

DataFrame.applymap(func, na_action=None, **kwargs)

参 数:

func :Python function, returns a single value from a single value.

na_action{None, ‘ignore’}, default None,If ‘ignore’, propagate NaN values, without passing them to func.

**kwargs:Additional keyword arguments to pass as keywords arguments to func.

 

返 回:DataFrame Transformed DataFrame.



官 网:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.applymap.html

 


先构造一个数据集

data = pd.DataFrame({"name":['Jack', 'Alice', 'Lily', 'Mshis', 'Gdli', 'Agosh', 'Filu', 'Mack', 'Lucy', 'Pony'],"gender":['F', 'M', 'F', 'F', 'M', 'F', 'M', 'M', 'F', 'F'],"age":[25, 34, 49, 42, 28, 23, 45, 21, 34, 29]}                     ) data name gender  age0   Jack      F   251  Alice      M   342   Lily      F   493  Mshis      F   424   Gdli      M   285  Agosh      F   236   Filu      M   457   Mack      M   218   Lucy      F   349   Pony      F   29

 

我们把姓名数据中所有的字符型数据消息小写化处理,对其他类型则原样返回:

def to_lower(x):    if isinstance(x,str):        return x.lower()    else:        return xdata.applymap(to_lower)    name gender  age0   jack      f   251  alice      m   342   lily      f   493  mshis      f   424   gdli      m   285  agosh      f   236   filu      m   457   mack      m   218   lucy      f   349   pony      f   29

 

其形状没有变化,配合applymap(),可以简洁地完成很多数据处理操作,特别是对于全部数据都要进行的统一处理,非常方便。

 

把一个数组转换成两位数的百分百形式

import numpy as npda_rn = pd.DataFrame(    {'A':np.random.randn(4),     'B':np.random.randn(4)})da_rn          A         B0 -0.166162 -0.0598241  0.530865 -0.9305232 -1.215844 -0.1422733  0.347695  0.308077
da_rn.applymap(lambda x: "{:.2%}".format(x)) A B0 -16.62% -5.98%1 53.09% -93.05%2 -121.58% -14.23%3 34.77% 30.81%
···  END  ···
往期精彩回顾




本站qq群851320808,加入微信群请扫码:
浏览 27
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报