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的while循环中使用else以及循环嵌套的用法
Oct 14 Python
Python用imghdr模块识别图片格式实例解析
Jan 11 Python
在python带权重的列表中随机取值的方法
Jan 23 Python
Django 多环境配置详解
May 14 Python
python读csv文件时指定行为表头或无表头的方法
Jun 26 Python
Django框架安装方法图文详解
Nov 04 Python
Python django搭建layui提交表单,表格,图标的实例
Nov 18 Python
python给视频添加背景音乐并改变音量的具体方法
Jul 19 Python
Sublime Text3最新激活注册码分享适用2020最新版 亲测可用
Nov 12 Python
python os.listdir()乱码解决方案
Jan 31 Python
详解Python中的for循环
Apr 30 Python
pandas时间序列之pd.to_datetime()的实现
Jun 16 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中遍历二维数组的几种方法详解
2013/06/08 PHP
朋友网关于QQ相关的PHP代码(研究QQ的绝佳资料)
2015/01/26 PHP
php生成固定长度纯数字编码的方法
2015/07/09 PHP
PHP模板引擎Smarty之配置文件在模板变量中的使用方法示例
2016/04/11 PHP
在Javascript中定义对象类别
2006/12/22 Javascript
基于jQuery的淡入淡出可自动切换的幻灯插件
2010/08/24 Javascript
jQuery之end()和pushStack()使用介绍
2012/02/07 Javascript
JSF中confirm弹出框的用法示例介绍
2014/01/07 Javascript
jquery的each方法使用示例分享
2014/03/25 Javascript
node.js中的fs.lchownSync方法使用说明
2014/12/16 Javascript
JavaScript更改原始对象valueOf的方法
2015/03/19 Javascript
解决jQuery使用JSONP时产生的错误
2015/12/02 Javascript
浅谈JavaScript 浏览器对象
2016/06/03 Javascript
AngularJS ng-template寄宿方式用法分析
2016/11/07 Javascript
Webpack常见静态资源处理-模块加载器(Loaders)+ExtractTextPlugin插件
2017/06/29 Javascript
详解require.js配置路径的用法和css的引入
2017/09/06 Javascript
Express系列之multer上传的使用
2017/10/27 Javascript
基于Swiper实现移动端页面图片轮播效果
2017/12/28 Javascript
[01:10:16]DOTA2上海特级锦标赛B组资格赛#2 Fnatic VS Spirit第一局
2016/02/27 DOTA
[23:18]Spirit vs Liquid Supermajor小组赛A组 BO3 第二场 6.2
2018/06/03 DOTA
详解Python中的多线程编程
2015/04/09 Python
Python的socket模块源码中的一些实现要点分析
2016/06/06 Python
读取json格式为DataFrame(可转为.csv)的实例讲解
2018/06/05 Python
python利用requests库模拟post请求时json的使用教程
2018/12/07 Python
python画图系列之个性化显示x轴区段文字的实例
2018/12/13 Python
Python简单处理坐标排序问题示例
2019/07/11 Python
python向图片里添加文字
2019/11/26 Python
HTML5 Canvas API中drawImage()方法的使用实例
2016/03/25 HTML / CSS
用C或者C++语言实现SOCKET通信
2015/02/24 面试题
大学军训感言1000字
2014/02/25 职场文书
付款委托书范本
2014/04/04 职场文书
服务承诺书怎么写
2014/05/24 职场文书
房产公证委托书范本
2014/09/20 职场文书
2014年教务处工作总结
2014/12/03 职场文书
水电施工员岗位职责
2015/04/11 职场文书
2019 入党申请书范文
2019/07/10 职场文书