pandas获取groupby分组里最大值所在的行方法


Posted in Python onApril 20, 2018

pandas获取groupby分组里最大值所在的行方法

如下面这个DataFrame,按照Mt分组,取出Count最大的那行

import pandas as pd
df = pd.DataFrame({'Sp':['a','b','c','d','e','f'], 'Mt':['s1', 's1', 's2','s2','s2','s3'], 'Value':[1,2,3,4,5,6], 'Count':[3,2,5,10,10,6]})

df

Count Mt Sp Value
0 3 s1 a 1
1 2 s1 b 2
2 5 s2 c 3
3 10 s2 d 4
4 10 s2 e 5
5 6 s3 f 6

方法1:在分组中过滤出Count最大的行

df.groupby('Mt').apply(lambda t: t[t.Count==t.Count.max()])

Count Mt Sp Value
Mt
s1 0 3 s1 a 1
s2 3 10 s2 d 4
4 10 s2 e 5
s3 5 6 s3 f 6

方法2:用transform获取原dataframe的index,然后过滤出需要的行

print df.groupby(['Mt'])['Count'].agg(max)

idx=df.groupby(['Mt'])['Count'].transform(max)
print idx
idx1 = idx == df['Count']
print idx1

df[idx1]
Mt
s1 3
s2 10
s3 6
Name: Count, dtype: int64
0 3
1 3
2 10
3 10
4 10
5 6
dtype: int64
0 True
1 False
2 False
3 True
4 True
5 True
dtype: bool

Count Mt Sp Value
0 3 s1 a 1
3 10 s2 d 4
4 10 s2 e 5
5 6 s3 f 6

上面的方法都有个问题是3、4行的值都是最大值,这样返回了多行,如果只要返回一行呢?

方法3:idmax(旧版本pandas是argmax)

idx = df.groupby('Mt')['Count'].idxmax()
print idx
df.iloc[idx]
Mt
s1 0
s2 3
s3 5
Name: Count, dtype: int64

Count Mt Sp Value
0 3 s1 a 1
3 10 s2 d 4
5 6 s3 f 6
df.iloc[df.groupby(['Mt']).apply(lambda x: x['Count'].idxmax())]

Count Mt Sp Value
0 3 s1 a 1
3 10 s2 d 4
5 6 s3 f 6
def using_apply(df):
 return (df.groupby('Mt').apply(lambda subf: subf['Value'][subf['Count'].idxmax()]))

def using_idxmax_loc(df):
 idx = df.groupby('Mt')['Count'].idxmax()
 return df.loc[idx, ['Mt', 'Value']]

print using_apply(df)

using_idxmax_loc(df)
Mt
s1 1
s2 4
s3 6
dtype: int64

Mt Value
0 s1 1
3 s2 4
5 s3 6

方法4:先排好序,然后每组取第一个

df.sort('Count', ascending=False).groupby('Mt', as_index=False).first()

Mt Count Sp Value
0 s1 3 a 1
1 s2 10 d 4
2 s3 6 f 6

那问题又来了,如果不是要取出最大值所在的行,比如要中间值所在的那行呢?

思路还是类似,可能具体写法上要做一些修改,比如方法1和2要修改max算法,方法3要自己实现一个返回index的方法。 不管怎样,groupby之后,每个分组都是一个dataframe。

以上这篇pandas获取groupby分组里最大值所在的行方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python函数返回多个值的示例方法
Dec 04 Python
Python中用Spark模块的使用教程
Apr 13 Python
Python基于有道实现英汉字典功能
Jul 25 Python
Python2.7编程中SQLite3基本操作方法示例
Aug 09 Python
Python实现按特定格式对文件进行读写的方法示例
Nov 30 Python
学习python中matplotlib绘图设置坐标轴刻度、文本
Feb 07 Python
Tensorflow实现神经网络拟合线性回归
Jul 19 Python
python脚本执行CMD命令并返回结果的例子
Aug 14 Python
django 连接数据库 sqlite的例子
Aug 14 Python
PyQt5.6+pycharm配置以及pyinstaller生成exe(小白教程)
Jun 02 Python
Python flask框架实现查询数据库并显示数据
Jun 04 Python
Python+OpenCV图像处理——实现直线检测
Oct 23 Python
pandas多级分组实现排序的方法
Apr 20 #Python
Python PyQt4实现QQ抽屉效果
Apr 20 #Python
Python在groupby分组后提取指定位置记录方法
Apr 20 #Python
PyQt实现界面翻转切换效果
Apr 20 #Python
python3+PyQt5+Qt Designer实现堆叠窗口部件
Apr 20 #Python
python3 pandas 读取MySQL数据和插入的实例
Apr 20 #Python
PyQt5每天必学之事件与信号
Apr 20 #Python
You might like
劣质的PHP代码简化
2010/02/08 PHP
与文件上传有关的php配置参数总结
2013/06/14 PHP
PhpDocumentor 2安装以及生成API文档的方法
2014/05/21 PHP
jQuery+CSS 实现随滚动条增减的汽水瓶中的液体效果
2011/09/26 Javascript
js获得当前时区夏令时发生和终止的时间代码
2014/02/23 Javascript
在父页面得到zTree已选中的节点的方法
2015/02/12 Javascript
jquery+ajax实现注册实时验证实例详解
2015/12/08 Javascript
一波JavaScript日期判断脚本分享
2016/03/06 Javascript
Node.js项目中调用JavaScript的EJS模板库的方法
2016/03/11 Javascript
原生js实现addClass,removeClass,hasClass方法
2016/04/27 Javascript
深入浅析JavaScript中with语句的理解
2016/05/12 Javascript
浅析jQuery 遍历函数,javascript中的each遍历
2016/05/25 Javascript
JavaScript sort数组排序方法和自我实现排序方法小结
2016/06/06 Javascript
浅谈js中的in-for循环
2016/06/28 Javascript
微信小程序 http请求详细介绍
2016/10/09 Javascript
jquery插件bootstrapValidator表单验证详解
2016/12/15 Javascript
jQuery表格(Table)基本操作实例分析
2017/03/10 Javascript
Angular实现的自定义模糊查询、排序及三角箭头标注功能示例
2017/12/28 Javascript
基于Vue2-Calendar改进的日历组件(含中文使用说明)
2019/04/14 Javascript
微信小程序中悬浮窗功能的实现代码
2019/08/02 Javascript
Python采用raw_input读取输入值的方法
2014/08/18 Python
在Python中使用第三方模块的教程
2015/04/27 Python
浅谈插入排序算法在Python程序中的实现及简单改进
2016/05/04 Python
详解用python生成随机数的几种方法
2019/08/04 Python
Pycharm如何运行.py文件的方法步骤
2020/03/03 Python
Python datetime 如何处理时区信息
2020/09/02 Python
CSS3实现自定义Checkbox特效实例代码
2017/04/24 HTML / CSS
HTML5 Canvas API中drawImage()方法的使用实例
2016/03/25 HTML / CSS
北美三大旅游网站之一:Travelocity
2017/08/12 全球购物
牵手50香港:专为黄金岁月的单身人士而设的交友网站
2020/08/14 全球购物
简单租房协议书
2014/10/21 职场文书
群众路线专项整治方案
2014/10/27 职场文书
英语教师个人总结
2015/02/09 职场文书
师德师风心得体会(2016精选篇)
2016/01/12 职场文书
解析Java异步之call future
2021/06/14 Java/Android
A22国内电台短波广播频率表
2022/05/10 无线电