【Python基础】pandas中apply与map的异同
◆ ◆ ◆ ◆ ◆
pandas作为数据处理与分析的利器,它的江湖地位非同小可。在我们数据处理与分析过程中,有时候需要对某一列的每一个值都进行处理,这时候推荐大家使用apply或者map。
一、直接使用内置函数或者numpy函数
# 数据展示df:年龄0 alan 191 black 152 cici 233 david 224 eric 18# 计算字符长度df['姓名'].apply(len):0 41 52 43 54 4Name: 姓名, dtype: int64# 计算平方df['年龄'].apply(np.square):0 3611 2252 5293 4844 324Name: 年龄, dtype: int64
二、使用lambda匿名函数
>>> df['年龄'].apply(lambda x: '已成年' if x>=18 else '未成年')Out[4]:0 已成年1 未成年2 已成年3 已成年4 已成年Name: 年龄, dtype: object>>> df['姓名'].apply(lambda x: x.title())Out[5]:0 Alan1 Black2 Cici3 David4 EricName: 姓名, dtype: object
# 自定义函数def fn(x):if x >=18:return '成年人'else:return '未成年'# 自定义函数作为apply参数df['年龄'].apply(fn):0 成年人1 未成年2 成年人3 成年人4 成年人Name: 年龄, dtype: object
# 计算字符长度df['姓名'].map(len):0 41 52 43 54 4Name: 姓名, dtype: int64# 计算平方df['年龄'].map(np.square):0 3611 2252 5293 4844 324Name: 年龄, dtype: int64
# 根据年龄打标签:是否成年>>> df['年龄'].map(lambda x: '已成年' if x>=18 else '未成年')Out[9]:0 已成年1 未成年2 已成年3 已成年4 已成年Name: 年龄, dtype: object# 修改姓名为首字母大写>>> df['姓名'].map(lambda x: x.title())Out[10]:0 Alan1 Black2 Cici3 David4 EricName: 姓名, dtype: object
三、使用def自定义函数
# 自定义函数作为map参数df['年龄'].map(fn):0 成年人1 未成年2 成年人3 成年人4 成年人Name: 年龄, dtype: object
四、使用dict作为map参数
# apply没有这种功能!>>> df['姓名'].map({'alan':'女','black':'男','cici':'女','david':'男','eric':'男'})Out[12]:0 女1 男2 女3 男4 男Name: 姓名, dtype: object
记得点在看~祝大家一夜暴富,基金、股票一片红~
往期精彩回顾
评论
