【pandas】库中的apply(lambda function ,arix)

pandas.apply()

遍历DataFrame的元素(一行或者一列数据)

行遍历:axis = 1     列遍历:axis = 0

基础信息

pandas的apply()方法是用来调用一个lambda函数,让函数对数据对象具有批处理的特性。

pandas支持apply()调用的对象包括——DataFrame\Series\分组对象等

DataFrame.apply(self, func, axis=0, raw=False, result_type=None, args=(), **kwargs)
  • func:函数或 lambda 表达式,应用于每行或者每列
  • axis:表示对象遍历的限制条件
    • 0 or ‘index’: 表示函数处理的是每一列
    • 1 or ‘columns’: 表示函数处理的是每一行
  • raw:bool 类型,默认为 False
    • False ,表示把每一行或列作为 Series 传入函数中
    • True,表示接受的是 ndarray 数据类型
  • result_type:{‘expand’, ‘reduce’, ‘broadcast’, None}, default None。These only act when axis=1 (columns)

    • ‘expand’ : 列表式的结果将被转化为列。
    • ‘reduce’ : 如果可能的话,返回一个 Series,而不是展开类似列表的结果。这与 expand 相反。
    • ‘broadcast’ : 结果将被广播到 DataFrame 的原始形状,原始索引和列将被保留。
  • func:func 的位置参数
  • **kwargs:要作为关键字参数传递给 func 的其他关键字参数

DataFrame与Series的区别与联系

区别:

  • series,只是一个一维结构,它由index和value组成。
  • dataframe,是一个二维结构,除了拥有index和value之外,还拥有column。

联系:

  • dataframe由多个series组成,无论是行还是列,单独拆分出来都是一个series。

3完整的df传入函数:(lambda内,x即为df)
df=df.apply(lambda x:myneed(x,arg1),axis=1)#可以将df['编号']传入函数:(lambda内,x即为df)
#操作对象就是df["编号"]
df=df.apply(lambda x:myneed(x['编号'],arg1),axis=1)
#也可以在df.apply()的apply函数前面的df进行增加操作对象的行或者列的限制
#对df['编号']进行apply操作:(lambda内,x即为df['编号'])
df['序号']=df['编号'].apply(lambda x:myneed(x,arg1),axis=1)

自己研究的实现的案例分析

def extract_cpath(cpath_route)if(cpath == '')return []return [int(s) for s in cpath.split(',')]
df["cpath_list"] = df.apply(lambda row:extract_cpath(row.cpath),axis = 1)#这段代码的含义是:
#首先定义一个extract_cpath(cpath_route)函数,函数实现的功能是提取出cpath列的符合条件的数据
df["cpath_list"]列用来存放row(df)的cpath列中通过extract_cpath函数提取出来的数据

(小贴士:通过find 命令能够查找当前目录及其子目录中所有符合特定条件的文件)大佬博客

#例如:查找当前目录及其子目录中所有以".txt"结尾的文件
find . -name "*.txt"

WKT格式数据的展示

Geopandas的coords问题

问题代码:
RoadNetWork = gpd.reead_file("../data/edges.shp")
#all_matched_edges_list = [3, 4, 5, 8, 11, 13, 14, 16, 17, 18, 20, 25]
RoadNetWork.id = RoadNetWork.id.astype(int) #将RoadNetWork.id 变成整数类型
edges_matched_result =RoadNetWork[RoadNetWork.id.isin(all_matched_edges_list)]
#上述作用:判断id与all_matched_edges_list是否匹配 如果匹配 输出行所在内容 如果不匹配 返回false 该行不输出
edges_matched_result.reset_index()
print(edges_matched_result.geometry.coords)
#我上述代码错误原因:对于整个geometry应用coords的坐标属性 对象不明确 
但是在apply(lambda row:len(row.geometry.coords),axis =1)里面,是逐行对geometry选定的列进行操作 这也就等价与针对于给定geometry的逐行的每个元素进行分析 对象指代明确 正确

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/696182.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Docker:docker在项目中常用的一些命令

简介   Docker 是一个开源的容器化平台,它允许开发者将应用程序及其依赖项打包到一个可移植的容器中,并发布到任何安装了 Docker 引擎的机器上。这些容器是轻量级的,包含了应用程序运行所需的所有东西,如代码、系统库、系统工具…

两种方法合并3dtiles(分别使用js/java)

目录 前言: 需合并的json目录 aa/tileset.json bb/tileset.json cc/tileset.json dd/tileset.json ee/tileset.json js源码: 运行命令: 生成结果: java源码: Matrix.java ThreeDTilesJoin2.java pom文件…

YOLOv8+CLIP实现图文特征匹配

本文通过结合YOLOv8s的高效物体检测能力与CLIP的先进图像-文本匹配技术,展示了深度学习在处理和分析复杂多模态数据中的潜力。这种技术的应用不仅限于学术研究,还能广泛应用于工业、商业和日常技术产品中,以实现更智能的人机交互和信息处理。…

管仲发动的粮食战争令人惊醒

各种类型的战争,在中国春秋战国时代就已经包罗万象、炉火纯青了,第一仲父管仲无疑是其中最伟大的军事家之一。 时至今日,他留给人们的最大印象,应该是孔子那句话“微管仲,吾其被发左衽矣。” 也就是说,如果…

办公软件_EdrawMax 免安装版教程 (亿图图示综合图形图表设计软件)

前言 万兴亿图图示(Wondershare EdrawMax)是一款综合图形图表设计软件,Visio国产替代.亿图图示中文版(Edraw Max)是一款办公绘图软件的思维导图软件.无需任何绘图功底,即可轻松创建各类思维导图.亿图图示专家,提供大量事例和在线模板,用于创建流程图,信息图,组织结构图,科学教…

滴滴7分钟路程收1414元事件:软件测试工程师的反思与启示

近日,一名上海网友在滴滴小程序发现了一条2017年的未支付信息。订单详情为2公里左右的行程,7分钟的时长,却显示付款1414元。 此次事件在滴滴客服回复“正常,支付就行”后,发酵到了热搜上,对滴滴平台的信誉造…

数字化教学实验室软件系统

实验室作为科研和技术创新的重要基地,数字化教学实验室软件系统为实验教学带来了极大的便利和创新。因此盛元广通数字化实验室软件系统应运而生。不仅支持实验课程的全流程管理,还提供了丰富的功能和工具来支持教师的教学和学生的学习。支持实验课程的预…

最短路径[dijkstra算法]——视频讲解+JAVA实现

dijkstra算法逻辑: 想要理解floyd算法的实现逻辑,最形象的视频讲解是很有必要的。 这里小编极力推荐B站蓝不过海呀这个Up的视频讲解,讲的非常细节, 比自己去看一些什么算法导论效率要高的多,毕竟相较于文字&#xf…

vue 发布项目

You are not allowed to force push code to a protected branch on this project. 分支做了保护,git中设置允许强制推送

第十二讲:指针(4)

第十二讲:指针(4) 1.回调函数1.1什么是回调函数1.2深入理解并使用回调函数1.2.1简单写法1.2.2优化 2.qsort函数详解2.1函数简单介绍2.3qsort函数使用举例2.3.1qsort函数排序整形数据2.3.2qsort函数排序结构数据 3.qsort函数的模拟实现3.1冒泡…

2024最新软件测试面试题及答案【史上最全】

以下是软件测试相关的面试题及答案,欢迎大家参考! 1、你的测试职业发展是什么? 测试经验越多,测试能力越高。所以我的职业发展是需要时间积累的,一步步向着高级测试工程师奔去。而且我也有初步的职业规划,前3年积累测试经验&…

渗透测试工具--AppInfoScanner 的安装与使用(一)

简洁 ApplicationScanner是一个快速稳定的App代码扫描工具,其主要功能是对ipa和apk文件进行扫描,以快速发现存在风险的代码。这款工具基于Python 3.7实现其主要功能,同时apk检测部分需要JDK 11的支持,因此它具备较好的跨平台特性…