十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
Apply、Map和Aplymap三者的区别是什么,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
成都创新互联专注于当阳网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供当阳营销型网站建设,当阳网站制作、当阳网页设计、当阳网站官网定制、微信小程序开发服务,打造当阳网络公司原创品牌,更为您提供当阳网站排名全网营销落地服务。
首先,来个总结
apply:应用在DataFrame的行或列中,也可以应用到单独一个Series的每个元素中
map:应用在单独一个Series的每个元素中
applymap:应用在DataFrame的每个元素中
先从apply开始,当然最权威的说明还是要看官方文档:
apply是沿DataFrame的轴应用功能,传递给函数的对象是Series对象,其索引为DataFrame的索引(axis = 0'')或DataFrame的列(axis = 1'')
当然比较常用的还是DataFrame.apply(),下边我们通过例子来说明一下帮助理解.
首先有一个表:
如果我们求一下每一列或者每一列的极差,注意axis参数的设置,一般默认为0,即求每一列的极值
apply的参数可以直接接收现成的函数,也可以接收自定义函数,比如自定义的匿名函数:
通过对轴信息的设置,也可以求每一行的极差:
需要注意的是结果的索引,能够很明显的告诉大家现在求的是行极差还是列极差,如果是行极差,索引是行标签,如果是列极差,索引是列名。
另外,对整个DataFrame运用apply的时候,要保证所有的字段都是符合作为参数的函数要求才可以,比如在列子中求极值得保证所有字段都是数值型才行,如果整个DataFrame不能满足要求,可以把符合要求的字段切出来再应用apply。
如果有需要,也可以把求的结果添加到原表当中。
如这个例子,将A列的所有元素转换数据类型,从整型转换成浮点型:
总结一下,apply运用到整个DataFrame中可以执行整列或者整行的运算,运用到Series中,执行的是对每个元素的运算。
这个运算,map也可以实现。
首先,还是看下官方文档是怎么说的:
根据输入对应关系映射Series的值。
用于将Series中的每个值替换为另一个值,该值可以从函数dict或Series派生。
官方指定,map是应用于Seriesd 的,参数可以是函数也可以字典。
首先,还是要有一个表:
现在需要将性别转换成0和1,女为0,男为1,这个时候千万不要写循环啊,map()可以轻松实现,先来试试函数的形式:
def gender(x): G = 1 if x == "男" else 0 return G
map的参数除了可以是参数,也可以是字典,这和apply对参数的要求不同:
最后来看一下applymap,还是先搬上官方文档:
将函数应用于元素的数据框。
此方法应用一个函数,该函数接受并返回一个标量到DataFrame的每个元素。
简单说,applymap是把函数应用到DataFrame中的每个元素上的,要和apply对整列或者整行进行的操作区分开啊,apply想要直接对每个元素进行操作,得单独提取出Series才可以实现,不能直接再整个DataFrame上执行。下边来看个例子。
还是开头的那个表:
现在要把每个元素的数据类型都转换成浮点型,applymap()就派上用场了:
最后再总结一下:
apply:
既可以用在DataFrame,也可以用到单独的Series中
运用到DataFrame时,是用到了整行或者整列上,不是逐一运用到每个元素上
运用到Series时,作用到每个元素上
第一个参数只接收python原生函数或者numpy中的函数
map
只能运用到Series的每个元素上
参数可以是函数也可以是字典,还可以是序列
applymap
只能应用在DataFrame中,并且是作用在DataFrame的每个元素中
参数只接收可调用的函数
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注创新互联行业资讯频道,感谢您对创新互联的支持。