听见涛声_数说张小桃

日拱一卒 | 梳理、沉淀、数据科学家踩坑之路 | 努力成为数据分析领域python最强的人

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

pandas 的 apply() 函数

 

一、apply() 函数 

DataFrame.apply(func, axis=0, broadcast=False, raw=False, reduce=None, args=(), **kwds)

参数解释:

(1)func:就是函数,不管是自定义的函数,还是匿名函数lambda

(2)axis:0表示以列作为一组计算,结果按行排序→,1表示以行作为一组(每条记录)计算,结果按列排序↓,默认axis=0

 

二、apply的使用总共基本用于三处:

(1)是你要对每条记录进行遍历用函数计算出一个值;此时,axis=1

(2)是你要对某一列进行操作;此时,axis=0

(3)是你groupby后要对每个group后的字表df 

df.apply(lambda x:func(x,args**),axis=1)
df.apply(lambda x:func(x,args**),axis=0)
df.groupby([column1]).apply(lambda x:func(x,args**))

 

三、理解apply核心在于明确两个环节:调度函数和作用对象。

调度函数就是apply接收的参数,既可以是Python内置的函数,也支持自定义函数,或者匿名函数lambda。只要符合指定的作用对象(即是标量scalar,还是一行或一列series,亦或一个dataframe)即可。

作用对象则取决于调用apply的对象类型,具体来说:

  • 一个Series对象调用apply时,数据处理函数作用于该Series的每个元素上,即作用对象是一个标量,实现从一个Series转换到另一个Series;

  • 一个DataFrame对象调用apply时,数据处理函数作用于该DataFrame的每一行或者每一列上,即作用对象是一个Series,实现从一个DataFrame转换到一个Series上;

  • 一个DataFrame对象经过groupby分组后调用apply时,数据处理函数作用于groupby后的每个子dataframe上,即作用对象还是一个DataFrame(行是每个分组对应的行;列字段少了groupby的相应列),实现从一个DataFrame转换到一个Series上。

apply应用在Pandas中,其核心功能其实可以概括为一句话:我本身不处理数据,我们只是数据的搬运工。

apply自身是不带有任何数据处理功能的,但可以用作是对其他数据处理方法(函数)的调度器,至于调度什么又为谁而调度呢?这是理解apply的两个核心环节:

  • 调用什么?调用的是apply函数接收的参数,即apply接收一个数据处理函数为主要参数,并将其应用到相应的数据上。所以调用什么取决于接收了什么样的数据处理函数;

  • 为谁调度?即apply调用数据处理函数,其作用对象是谁?或者说数据处理的粒度是什么?答案是数据处理的粒度包括了点线面三个层面:即可以是单个元素(标量,scalar),也可以是一行或一列(series),还可以是一个dataframe

posted on   数说张小桃  阅读(1164)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
历史上的今天:
2019-08-19 区别 |python |[-1]、[:-1]、[::-1]、[2::-1]的使用
点击右上角即可分享
微信分享提示