python中多个条件求值怎么算,如何使用python pandas对列进行分组并按条件计算值?...
Input:
df=pd.DataFrame({
'BusId':['abc1','abc2','abc3','abc1','abc2','abc4'],
"Fair":[5,6,7,10,5,4]
})
Need to group by BusId and need the following output
Output:
BusId Count of Fair>=5 Count of Fair>=10
abc1 2 1
abc2 1 0
abc3 1 0
abc4 0 0
Thanks for the help.
解决方案
Using agg on your series with two helper functions to count the values above each of your thresholds.
However, aggregation on a Series as I am doing here will be deprecated in a future version of pandas.
df.groupby('BusId').Fair.agg({
'gt5': lambda x: (x>=5).sum(),
'gt10': lambda x: (x>=10).sum()
})
gt5 gt10
BusId
abc1 2 1
abc2 2 0
abc3 1 0
abc4 0 0
You could also remove the use of lambda:
out = df.assign(gt5=df.Fair.ge(5), gt10=df.Fair.ge(10))
out.groupby('BusId').agg({'gt5': 'sum', 'gt10': 'sum'}).astype(int)
gt5 gt10
BusId
abc1 2 1
abc2 2 0
abc3 1 0
abc4 0 0
The second approach will be slightly faster:
%%timeit
df.groupby('BusId').Fair.agg({
'gt5': lambda x: (x>=5).sum(),
'gt10': lambda x: (x>=10).sum()
})
5.05 ms ± 69 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
%%timeit
out = df.assign(gt5=df.Fair.ge(5), gt10=df.Fair.ge(10))
out.groupby('BusId').agg({'gt5': 'sum', 'gt10': 'sum'}).astype(int)
3.76 ms ± 44.2 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
python中多个条件求值怎么算,如何使用python pandas对列进行分组并按条件计算值?...相关推荐
- python中关系运算符惰性求值_python对象属性惰性取值
python面向对象进阶 在知乎上面看到这个如何让python对象属性具有惰性求值的能力,认真学习了一番,记录一下. __setattr__.__getattr__.__delattr__ class ...
- python中关系运算符惰性求值,lazy.js 惰性求值实现分析
背景:惰性求值? 来看一个 lazy.js 主页提供的示例: var people = getBigArrayOfPeople(); var results = _.chain(people) .pl ...
- python中编写一个函数求数值x的绝对值(python实验二)
(1)函数的调用(2)如何求函数的绝对值 目录 一.python求绝对值的三种方法 二.使用步骤 三.函数调用 一.python求绝对值的三种方法 1.条件判断 2.内置函数abs() 3.内置模块 ...
- python中 a or b 的值为_详解python中and和or的返回值
在Python 中,and 和 or 执行布尔逻辑演算,如你所期待的一样,但是它们并不返回布尔值:而是,返回它们实际进行比较的值之一. 一.and:>>> 'a' and 'b' ' ...
- python输入数学表达式并求值_Python 条件表达式求值
Python 条件表达式求值,Python对表达式执行严格排序,其中值得注意的例外情况是短路运算符and和or.对语句的求值也有严格的顺序要求,这使得难以对其进行优化,因为可能会破坏严格的求值顺序. ...
- python参数传递方法_深入理解python中函数传递参数是值传递还是引用传递
python 的 深入理解python中函数传递参数是值传递还是引用传递 目前网络上大部分博客的结论都是这样的: Python不允许程序员选择采用传值还是传 引用.Python参数传递采用的肯定是&q ...
- python英语字典程序修改_详解如何修改python中字典的键和值
我们知道python中字典是无序的,它们都是通过hash去对应的.一般的如果我们需要修改字典的值,只需要直接覆盖即可,而修改字典的键,则需要使用字典自带的pop函数,示例如下: t = {} t['a ...
- linux中popen汉字乱码,Python中使用subprocess.Popen返回值乱码解决方案
Python中使用subprocess.Popen返回值乱码解决方案 问题描述 在python 2.7中,使用subprocess.Popen()调用*nix命令,并通过管道,获取其输出,并将其返回值 ...
- Python中键映射多个值的方法:defaultdict
Python中键映射多个值的方法有两种: 想保持元素的插入顺序就应该使用列表: 想去掉重复元素就使用集合并且不关心元素的顺序问题的话应该使用set from collections import de ...
最新文章
- 001-测试用例简介
- * Linux相关命令
- @excel 注解_7 行代码实现 Excel 文件导出
- .NET源码反编译和加密
- 轻松学习,高效学习,那些年大学玩命的学习方法
- Thymeleaf 语法快速入门
- mysql group by 集合_MySQL高级查询之与Group By集合使用介绍
- 一步步学习微软InfoPath2010和SP2010--第九章节--使用SharePoint用户配置文件Web service(2)--在事件注册表单上创建表单加载规则...
- PS特效:图像碎片化
- android 将.txt文件转化为.db并使用raw下的数据文件
- 传智播客Java学习之类的继承
- 7-4 愿天下有情人都是失散多年的兄妹 (25 分)(第十二周编程题)
- SpringBoot之整合thymeleaf渲染Web页面
- 【Python】计算任意位数的圆周率π(Machin Formula)
- 线段树维护(最大区间和,最大子段和,最长连续上升子序列)
- 丁总路由器设置以及401联网
- IOS 个人证书的申请
- 【mysql的设计与优化专题(5)】慢查询详解
- 5G 帧结构、物理资源与物理信道
- 【前端必备】使用NodeJs写接口(本地连接MySQL + 连接到云服务MySQL)