【Python】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]}
)
data
name gender age
0 Jack F 25
1 Alice M 34
2 Lily F 49
3 Mshis F 42
4 Gdli M 28
5 Agosh F 23
6 Filu M 45
7 Mack M 21
8 Lucy F 34
9 Pony F 29
我们把姓名数据中所有的字符型数据消息小写化处理,对其他类型则原样返回:
def to_lower(x):
if isinstance(x,str):
return x.lower()
else:
return x
data.applymap(to_lower)
name gender age
0 jack f 25
1 alice m 34
2 lily f 49
3 mshis f 42
4 gdli m 28
5 agosh f 23
6 filu m 45
7 mack m 21
8 lucy f 34
9 pony f 29
其形状没有变化,配合applymap(),可以简洁地完成很多数据处理操作,特别是对于全部数据都要进行的统一处理,非常方便。
把一个数组转换成两位数的百分百形式
import numpy as np
da_rn = pd.DataFrame(
np.random.randn(4), :
np.random.randn(4)}) :
da_rn
A B
0 -0.166162 -0.059824
1 0.530865 -0.930523
2 -1.215844 -0.142273
3 0.347695 0.308077
x: "{:.2%}".format(x))
A B
0 -16.62% -5.98%
1 53.09% -93.05%
2 -121.58% -14.23%
3 34.77% 30.81%
··· END ···
往期精彩回顾 本站qq群851320808,加入微信群请扫码:
评论