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版微信红包分配算法
May 04 Python
利用Python自动监控网站并发送邮件告警的方法
Aug 24 Python
Python 装饰器使用详解
Jul 29 Python
python中验证码连通域分割的方法详解
Jun 04 Python
python3 实现验证码图片切割的方法
Dec 07 Python
Python3中函数参数传递方式实例详解
May 05 Python
详解python uiautomator2 watcher的使用方法
Sep 09 Python
python 和c++实现旋转矩阵到欧拉角的变换方式
Dec 04 Python
如何基于python实现脚本加密
Dec 28 Python
python PIL模块的基本使用
Sep 29 Python
Python自动化办公Excel模块openpyxl原理及用法解析
Nov 05 Python
Matplotlib可视化之添加让统计图变得简单易懂的注释
Jun 11 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
如何给phpadmin一个保护
2006/10/09 PHP
过滤掉PHP数组中的重复值的实现代码
2011/07/17 PHP
PHP判断是否有Get参数的方法
2014/05/05 PHP
php递归删除指定文件夹的方法小结
2015/04/20 PHP
AJAX使用了UpdatePanel后无法使用alert弹出脚本
2010/04/02 Javascript
奉献给JavaScript初学者的编写开发的七个细节
2011/01/11 Javascript
javascript 日期时间 转换的方法
2013/02/21 Javascript
Extjs Gird 支持中文拼音排序实现代码
2013/04/15 Javascript
JavaScript全排列的六种算法 具体实现
2013/06/29 Javascript
jquery实现div拖拽宽度示例代码
2013/07/31 Javascript
js处理json以及字符串的比较等常用操作
2013/09/08 Javascript
Javascript实现滚动图片新闻的实例代码
2013/11/27 Javascript
JavaScript中常用的六种互动方法示例
2015/03/13 Javascript
js实现兼容IE、Firefox的图片缩放代码
2015/12/08 Javascript
jQuery easyui的validatebox校验规则扩展及easyui校验框validatebox用法
2016/01/18 Javascript
使用JavaScript实现链表的数据结构的代码
2017/08/02 Javascript
JS实现前端缓存的方法
2017/09/21 Javascript
Vue.js搭建移动端购物车界面
2020/06/28 Javascript
详解vue.js下引入百度地图jsApi的两种方法
2018/07/27 Javascript
微信小程序之判断页面滚动方向的示例代码
2018/08/30 Javascript
Javascript Dom元素获取和添加详解
2019/09/24 Javascript
ES6学习笔记之let与const用法实例分析
2020/01/22 Javascript
详解ES6 CLASS在微信小程序中的应用实例
2020/04/24 Javascript
js判断鼠标移入移出方向的方法
2020/06/24 Javascript
[00:47]TI7不朽珍藏III——沙王不朽展示
2017/07/15 DOTA
Python实现115网盘自动下载的方法
2014/09/30 Python
python循环定时中断执行某一段程序的实例
2019/06/29 Python
python实现滑雪者小游戏
2020/02/22 Python
实例教程 纯CSS3打造非常炫的加载动画效果
2014/11/05 HTML / CSS
使用CSS3来实现滚动视差效果的教程
2015/08/24 HTML / CSS
人事助理岗位职责
2013/11/18 职场文书
财务人员个人求职信范文
2013/12/04 职场文书
《九色鹿》教学反思
2014/02/27 职场文书
电气工程自动化求职信
2014/03/14 职场文书
好听的队名和口号
2014/06/09 职场文书
2015大学自主招生自荐信范文
2015/03/04 职场文书