Python在groupby分组后提取指定位置记录方法


Posted in Python onApril 20, 2018

在进行数据分析、数据建模时,我们首先要做的就是对数据进行处理,提取我们需要的信息。下面为大家介绍一些groupby的用法,以便能够更加方便地进行数据处理。

我们往往在使用groupby进行信息提取时,往往是求分组后样本的一些统计量(max、min,var等)。如果现在我们希望取一下分组后样本的第二条记录,倒数第三条记录,这个该如何操作呢?我们可以通过first、last来提取分组后第一条和最后一条样本。但如果我们要取指定位置的样本,就没有现成的函数。需要我们自己去写了。下面我就为大家介绍如何实现上面的功能。

1)数据介绍

action表共有3列:userid、actionType和actionTime,分别代表用户id,用户行为类型和行为发生时间。具体格式如下图所示:

Python在groupby分组后提取指定位置记录方法

2)分组操作

a = action.groupby('userid') 
b = action.groupby('userid')['actionTime'] 
type(a) 
type(b)

分组后我们可以看到a和b的数据类型是DataFrameGroupBy和SeriesGroupBy

Python在groupby分组后提取指定位置记录方法

3)取数操作

①不同用户第二次/倒数第二次操作时间

action.groupby('userid')['actionTime'].apply(lambda i:i.iloc[1] if len(i)>1 else np.nan) 
action.groupby('userid')['actionTime'].apply(lambda i:i.iloc[-2] if len(i)>1 else np.nan)

②不同用户某种行为第二次/倒数第二次操作时间

action[action['actionType']==2].groupby('userid')['actionTime'].apply(lambda i:i.iloc[1] if len(i)>1 else np.nan) 
action[action['actionType']==2].groupby('userid')['actionTime'].apply(lambda i:i.iloc[-2] if len(i)>1 else np.nan)

PS:因为有些用户可能只有一条记录,直接取可能会出错,所以我用if先做判断。

这样我们就可以提取分组后数据任意位置的样本了。

以上这篇Python在groupby分组后提取指定位置记录方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
在Python的Bottle框架中使用微信API的示例
Apr 23 Python
Python爬取网易云音乐热门评论
Mar 31 Python
Python正则表达式经典入门教程
May 22 Python
python读取txt文件中特定位置字符的方法
Dec 24 Python
Python turtle绘画象棋棋盘
Aug 21 Python
python绘制随机网络图形示例
Nov 21 Python
python实现打砖块游戏
Feb 25 Python
Python如何使用OS模块调用cmd
Feb 27 Python
django model 条件过滤 queryset.filter(**condtions)用法详解
May 20 Python
详细分析Python可变对象和不可变对象
Jul 09 Python
Python生成器传参数及返回值原理解析
Jul 22 Python
python通过新建环境安装tfx的问题
May 20 Python
PyQt实现界面翻转切换效果
Apr 20 #Python
python3+PyQt5+Qt Designer实现堆叠窗口部件
Apr 20 #Python
python3 pandas 读取MySQL数据和插入的实例
Apr 20 #Python
PyQt5每天必学之事件与信号
Apr 20 #Python
pandas groupby 分组取每组的前几行记录方法
Apr 20 #Python
基于pandas数据样本行列选取的方法
Apr 20 #Python
pandas实现选取特定索引的行
Apr 20 #Python
You might like
海河写的 Discuz论坛帖子调用js的php代码
2007/08/23 PHP
PHP防止跨域提交表单
2013/11/01 PHP
php解析json数据实例
2014/08/19 PHP
php jsonp单引号转义
2014/11/23 PHP
图文介绍PHP添加Redis模块及连接
2015/07/28 PHP
jQuery向下滚动即时加载内容实现的瀑布流效果
2016/01/07 PHP
PHP判断是否是微信打开,浏览器打开的方法
2018/03/14 PHP
JS获得URL超链接的参数值实例代码
2013/06/21 Javascript
Jquery实现兼容各大浏览器的Enter回车切换输入焦点的方法
2014/09/01 Javascript
显示今天的日期js代码(阳历和农历)
2014/09/30 Javascript
jquery中checkbox使用方法简单实例演示
2015/11/24 Javascript
分享两段简单的JS代码防止SQL注入
2016/04/12 Javascript
jQuery Ajax 加载数据时异步显示加载动画
2016/08/01 Javascript
Bootstrap CSS组件之按钮下拉菜单
2016/12/17 Javascript
angularjs的select使用及默认选中设置
2017/04/08 Javascript
Bootstrap table学习笔记(2) 前后端分页模糊查询
2017/05/18 Javascript
详解vue express启动数据服务
2017/07/05 Javascript
微信小程序实现页面跳转传值以及获取值的方法分析
2017/12/18 Javascript
基于substring()和substr()的使用以及区别(实例讲解)
2017/12/28 Javascript
深入理解node.js http模块
2018/01/24 Javascript
JS抛物线动画实例制作
2018/02/24 Javascript
bootstrap中日历范围选择插件daterangepicker的使用详解
2018/04/17 Javascript
JavaScript享元模式原理与用法实例详解
2020/03/09 Javascript
Vue切换组件实现返回后不重置数据,保留历史设置操作
2020/07/21 Javascript
Django框架下在URLconf中指定视图缓存的方法
2015/07/23 Python
python实现串口自动触发工作的示例
2019/07/02 Python
Django中的静态文件管理过程解析
2019/08/01 Python
python opencv实现信用卡的数字识别
2020/01/12 Python
一些关于python 装饰器的个人理解
2020/08/31 Python
scrapy利用selenium爬取豆瓣阅读的全步骤
2020/09/20 Python
美国领先的医疗警报服务:Philips Lifeline
2018/03/12 全球购物
模具设计与制造专业应届生求职信
2013/10/18 职场文书
后进生转化工作制度
2014/01/17 职场文书
师范学院美术系毕业生自我鉴定
2014/01/29 职场文书
生日宴会策划方案
2014/06/03 职场文书
小学记事作文之200字
2019/08/06 职场文书