pandas 的apply() 函数
pandas的apply函数是自动根据function遍历每一个数据,然后返回一个数据结构为Series的结果
DataFrame.apply(func, axis=0, broadcast=False, raw=False, reduce=None, args=(), **kwds)
参数解释:
1.func:就是函数,不管是自定义的函数,还是匿名函数lambda
2.axis:0是类,1是行,默认axis=0
例子:
import numpy as np import pandas as pd a=np.arange(1,13).reshape(3,4) df=pd.DataFrame(a,columns=list('abcd')) df.apply(lambda x:x.sum()) df.apply(lambda x:x.sum(),axis=1) #应用于Series数据 df['a'].apply(lambda x:x*x)
如果是fun的参数是一个字表,也就是groupby之后的字表,这时我们这样使用
zg_tmp.groupby('label').apply(lambda x:pc.cols_report(x)) #或者是 zg_tmp.groupby('label').apply(pc.cols_report)
apply的使用总共基本用于三处,1是你要对每条记录进行遍历去函数计算出一个值,2是你要对某一列进行操作,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**))
df.groupby(“count”).get_group(1)获得某一组的df
df.groupby(“count”).groups获得所有组的两端索引的列表,以索引表示
df.groupby(“count”).indices获得所有组的两端索引的列表,以列表表示
如果函数中有多个参数,我们可以使用args=(),括号里面就是除第一个参数外,其余的参数
=======================================2021.01.25补充======================================
那么apply应用在Pandas中,其核心功能其实可以概括为一句话:
apply:我本身不处理数据,我们只是数据的搬运工。
apply自身是不带有任何数据处理功能的,但可以用作是对其他数据处理方法的调度器,至于调度什么又为谁而调度呢?这是理解apply的两个核心环节:
-
调度什么?调度的是apply函数接收的参数,即apply接收一个数据处理函数为主要参数,并将其应用到相应的数据上。所以调度什么取决于接收了什么样的数据处理函数;
-
为谁调度?也就是apply接收的数据处理函数,其作用对象是谁?或者说数据处理的粒度是什么?答案是数据处理的粒度包括了点线面三个层面:即可以是单个元素(标量,scalar),也可以是一行或一列(series),还可以是一个dataframe。
理解apply核心在于明确两个环节:调度函数和作用对象。调度函数就是apply接收的参数,既可以是Python内置的函数,也支持自定义函数,只要符合指定的作用对象(即是标量还是series亦或一个dataframe)即可。而作用对象则取决于调用apply的对象类型,具体来说:
-
一个Series对象调用apply时,数据处理函数作用于该Series的每个元素上,即作用对象是一个标量,实现从一个Series转换到另一个Series;
-
一个DataFrame对象调用apply时,数据处理函数作用于该DataFrame的每一行或者每一列上,即作用对象是一个Series,实现从一个DataFrame转换到一个Series上;
-
一个DataFrame对象经过groupby分组后调用apply时,数据处理函数作用于groupby后的每个子dataframe上,即作用对象还是一个DataFrame(行是每个分组对应的行;列字段少了groupby的相应列),实现从一个DataFrame转换到一个Series上
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人