pandas:解决groupby().apply()方法打印两次
时间:2022-07-24
本文章向大家介绍pandas:解决groupby().apply()方法打印两次,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
对于以下dataframe执行dataframe.groupby(['name', 'course']).apply(lambda x: test(x)) 操作
其中test(x)函数为:
def test(x):
print(x)
那么打印结果为:
可以发现,groupby()后的第一个结果被打印了两次。
对于这种情况,Pandas官方文档的解释是:
什么意思呢?就是说,apply在第一列/行上调用func两次,以决定是否可以进行某些优化。
而在pandas==0.18.1以及最新的pandas==0.23.4中进行尝试后发现,这个情况都存在。
在某些情境,例如对groupby()后的dataframe进行apply()批处理,为了避免重复,我们并不想让第一个结果打印出两次。
方法一:
如果能对apply()后第一次出现的dataframe跳过不处理就好了。
这里采用的方法是设置标识符,通过判断标识符状态决定是否跳过。代码如下:
global flag
flag = False
def test(x):
global flag
if flag == False:
flag = True
return
print(x)
测试结果为:
可以发现重复的dataframe已经跳过不再打印,问题顺利地解决~
方法二:
在上面的分析中,已经找了问题的原因是因为apply()方法的引入。那么,有没有可以代替apply()方法呢?这里可以采用filter()方法,即用groupby().filter() 代替groupby().apply()。具体代码如下:
def test(x):
print(x)
df.groupby(['name', 'course']).filter(lambda x: test(x))
打印出测试结果,也ok~
- POJ 2478Farey Sequence
- cookie、session、token三者使用
- SpringCloud注册中心集群搭建
- SpringCloud配置中心集群搭建
- HDU1846 Brave Game
- 拉格朗日插值
- python爬虫入门(二)Opener和Requests
- python爬虫入门(三)XPATH和BeautifulSoup4
- python爬虫入门(四)利用多线程爬虫
- LOJ #115. 无源汇有上下界可行流
- 数据库改名系列(数据库名,逻辑名,物理文件名)
- BZOJ1468: Tree
- 洛谷P3806 【模板】点分治1
- 探索ASP.NET MVC5系列之~~~5.缓存篇(页面缓存+二级缓存)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- PUMA560机器人工具箱运动控制A:路径规划-运动学
- Android 3分钟带你入门开发测试
- Spring Boot 知识清单(一)SpringApplication
- Linux下的IO监控与分析
- pytorch+Unet图像分割:将图片中的盐体找出来
- html 用浏览器打开中文乱码解决方法
- SQLServer 数据库字符集、版本号sql语句查询语法
- chrome 浏览器自保留端口、安全端口有哪些?chrome不能访问某个端口的环境网址,但是其它的浏览器可以访问原因及解决办法。
- MySql 数据库 - 重置数据库、重置初始密码方法,数据库初始化方法,长时间不用忘记密码暴力解决方法
- MobaXterm工具连接Linux服务器入门使用手册,国产化泰山服务器连接工具使用演示
- Linux 服务器配置信息查询方法,国产化申威服务器配置信息查看演示
- 达梦数据库、oracle数据库如何判断指定表有没有建立索引?对应的表有没有索引查询方法
- Linux服务器运行sh文件提示权限不够解决方法?飞腾服务器Permission denied问题授权方法
- 不支持图形化界面的Linux系统如何显示图像化界面?飞腾服务器显示图像化界面方法,DISPLAY environment variable is undefined问题解决方法
- 一分钟学Python| Python的函数(上)