当前位置: 首页 > 科技观察

一文弄懂Apply、Map和Aplymap三种函数的区别

时间:2023-03-12 07:57:34 科技观察

一篇文章了解Apply、Map、Aplymap这三个函数的区别我也知道需要用到apply、map或者applymap,但是具体情况下具体使用哪个方法或者对这些方法了解不够。合作伙伴了解它们之间的区别,遇到问题时可以清楚地了解使用哪个以及如何使用。事不宜迟,让我们开始吧。首先总结一下apply:appliedtotherowsorcolumnsofaDataFrame,ortoeachelementofaSingleSeriesmap:appliedtoeachelementofaDataFrameApply从apply开始当然,最权威的解释还是要看官方文档:apply是沿着DataFrame的轴应用函数。传递给函数的对象是一个Series对象,其索引为DataFrame(axis=0'')或者DataFrame的索引,当然更常用的是column(axis=1'')还是DataFrame.apply(),让我们用一个例子来说明它以帮助理解。首先有一个表:适用于DataFrame如果我们要求每一列或者每一列极差,注意axis参数的设置,一般默认为0,即求每一列的极值.apply参数可以直接接收现成函数,也可以接收自定义函数,比如自定义匿名函数:通过轴信息设置,也可以找到每一行的范围:需要注意的是索引结果,它可以清楚地告诉您是要查找行范围还是列范围。如果是行范围,索引就是行标签。如果是列极坏,索引就是列名。另外,在整个DataFrame上使用apply时,需要保证所有字段作为参数都满足功能要求。比如在列中,需要保证所有的字段都是数值型的。如果整个DataFrame不能满足要求,可以把符合要求的字段裁剪出来再apply。如果需要,还可以将搜索结果添加到原始表中。ApplyapplytoSeries,如本例,将A列所有元素的数据类型从整型转为浮点型:综上所述,applytotheentireDataFrame可以对整列或整行进行操作,并应用到Series,它对每个元素执行操作。这个操作也可以通过map来实现。map首先我们看一下官方文档是怎么说的:根据输入的对应关系映射Series的值。用于将Series中的每个值替换为另一个值,该值可以从函数dict或Series派生。官方说map是应用于Seriesd的,参数可以是函数也可以是字典。首先,还有一张表:现在需要将性别转化为0和1,女性为0,男性为1,这时候不要写循环,map()很容易实现,我们试试first的形式:defgender(x):G=1ifx=="male"else0returnGmap的参数不仅可以是参数,还可以是字典,区别于apply对参数的要求:applymap最后,我们先看看applymap,还是先看官方文档:Applyingafunctiontoadataframeelementbyelement。此方法应用一个函数,该函数接受一个标量并将其返回到DataFrame的每个元素。简单来说,applymap对DataFrame中的每个元素应用一个函数。必须区别于apply对整列或整行的操作。apply如果想直接对每个元素进行操作,必须将Series单独提取出来。可以实现,但不能直接在整个DataFrame上执行。让我们看下面的例子。还是一开始的表格:现在我们需要将每个元素的数据类型转换成浮点型,applymap()就派上用场了:最后总结一下:apply:可以在DataFrame中使用,也可以单独使用的时候DataFrame用在Series中,是用在整行或整列上,而不是一个一个地用在每个元素上,只能应用于一个Series的每个元素上。参数可以是函数或字典,也可以是序列。用法是上面提到的例子中的用法。希望本文能帮助大家区分apply、map和applymap,灵活使用。