Pandas中的宝藏函数-applymap
applymap的用法比较简单,会对DataFrame中的每个单元格执行指定函数的操作,虽然用途不如apply广泛,但在某些场合下还是非常有用的。
applymap()是与map()方法相对应的专属于DataFrame对象的方法,类似map()方法传入函数、字典等,传入对应的输出结果。
不同的是applymap()将传入的函数等作用于整个数据框中每一个位置的元素,因此其返回结果的形状与原数据框一致。
关联阅读:
语 法:
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]})dataname 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(:np.random.randn(4),:np.random.randn(4)})da_rnA B0 -0.166162 -0.0598241 0.530865 -0.9305232 -1.215844 -0.1422733 0.347695 0.308077x: "{:.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 ···
长按加群,一起交流学习
↓扫描关注本号↓
评论
