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程序中的应用示例
Mar 02 Python
Python验证文件是否可读写代码分享
Dec 11 Python
python实现Flappy Bird源码
Dec 24 Python
用Python徒手撸一个股票回测框架搭建【推荐】
Aug 05 Python
Django实现发送邮件找回密码功能
Aug 12 Python
Django视图扩展类知识点详解
Oct 25 Python
pytorch 准备、训练和测试自己的图片数据的方法
Jan 10 Python
keras打印loss对权重的导数方式
Jun 10 Python
Django用内置方法实现简单搜索功能的方法
Dec 18 Python
Python基于opencv的简单图像轮廓形状识别(全网最简单最少代码)
Jan 28 Python
Python使用paramiko连接远程服务器执行Shell命令的实现
Mar 04 Python
使用Python开发贪吃蛇游戏 SnakeGame
Apr 30 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
使用eAccelerator加密PHP程序
2008/10/03 PHP
一道关于php变量引用的面试题
2010/08/08 PHP
PHP中=赋值操作符对不同数据类型的不同行为
2011/01/02 PHP
屏蔽机器人从你的网站搜取email地址的php代码
2012/11/14 PHP
php简单实现查询数据库返回json数据
2015/04/16 PHP
提高php编程效率技巧
2015/08/13 PHP
使用composer 安装 laravel框架的方法图文详解
2019/08/02 PHP
一步一步制作jquery插件Tabs实现过程
2010/07/06 Javascript
HTML上传控件取消选择
2013/03/06 Javascript
AJAX跨域请求json数据的实现方法
2013/11/11 Javascript
js中replace的用法总结
2013/12/27 Javascript
7个JS基础知识总结
2014/03/05 Javascript
JavaScript设计模式之适配器模式介绍
2014/12/28 Javascript
简介AngularJS中使用factory和service的方法
2015/06/17 Javascript
Bootstrap每天必学之按钮(Button)插件
2016/04/25 Javascript
jquery点击展示与隐藏更多内容
2016/12/03 Javascript
JavaScript 动态三角函数实例详解
2017/01/08 Javascript
原生js实现鼠标跟随效果
2017/02/28 Javascript
jquery中done和then的区别(详解)
2017/12/19 jQuery
axios发送post请求springMVC接收不到参数的解决方法
2018/03/05 Javascript
react项目实践之webpack-dev-serve
2018/09/14 Javascript
详解angularjs跨页面传参遇到的一些问题
2018/11/01 Javascript
详解Vue项目中实现锚点定位
2019/04/24 Javascript
Vue设置长时间未操作登录自动到期返回登录页
2020/01/22 Javascript
node.js使用yargs处理命令行参数操作示例
2020/02/11 Javascript
[02:32]DOTA2英雄基础教程 祸乱之源
2013/12/23 DOTA
[03:11]2014DOTA2国际邀请赛-VG掉入败者组 独家专访357
2014/07/19 DOTA
python 拷贝特定后缀名文件,并保留原始目录结构的实例
2018/04/27 Python
pyinstaller参数介绍以及总结详解
2019/07/12 Python
Django如何继承AbstractUser扩展字段
2020/11/27 Python
实例教程 一款纯css3实现的数字统计游戏
2014/11/10 HTML / CSS
size?德国官方网站:英国伦敦的球鞋精品店
2018/03/17 全球购物
商务专员岗位职责
2013/11/23 职场文书
合作经营协议书范本
2014/04/17 职场文书
教师远程培训心得体会
2016/01/09 职场文书
Python中time标准库的使用教程
2022/04/13 Python