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 11 Python
通过Python来使用七牛云存储的方法详解
Aug 07 Python
使用Python写个小监控
Jan 27 Python
Python2.x利用commands模块执行Linux shell命令
Mar 11 Python
Python2.7简单连接与操作MySQL的方法
Apr 27 Python
Python对象属性自动更新操作示例
Jun 15 Python
Python3网络爬虫开发实战之极验滑动验证码的识别
Aug 02 Python
Python-numpy实现灰度图像的分块和合并方式
Jan 09 Python
使用python实现名片管理系统
Jun 18 Python
使用Pytorch搭建模型的步骤
Nov 16 Python
再也不用花钱买漫画!Python爬取某漫画的脚本及源码
Jun 09 Python
Python FuzzyWuzzy实现模糊匹配
Apr 28 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
《星际争霸重制版》兵种对比图鉴
2020/03/02 星际争霸
php获取后台Job管理的实现代码
2011/06/10 PHP
ThinkPHP中Common/common.php文件常用函数功能分析
2016/05/20 PHP
微信支付开发发货通知实例
2016/07/12 PHP
JavaScript中的常见问题解决方法(乱码,IE缓存,代理)
2013/11/28 Javascript
JQuery控制div外点击隐藏而div内点击不会隐藏的方法
2015/01/13 Javascript
EasyUI实现第二层弹出框的方法
2015/03/01 Javascript
JavaScript-html标题滚动效果的简单实现
2016/09/08 Javascript
jQuery实现自动调用和触发某个事件的方法
2016/11/18 Javascript
angularjs之$timeout指令详解
2017/06/13 Javascript
微信小程序图片宽100%显示并且不变形
2017/06/21 Javascript
JavaScript求一个数组中重复出现次数最多的元素及其下标位置示例
2018/07/23 Javascript
JS用最简单的方法实现四舍五入
2019/08/27 Javascript
微信小程序防止多次点击跳转和防止表单组件输入内容多次验证功能(函数防抖)
2019/09/19 Javascript
微信小程序实现禁止分享代码实例
2019/10/19 Javascript
python 获取文件列表(或是目录例表)
2009/03/25 Python
python 简易计算器程序,代码就几行
2009/08/29 Python
将图片文件嵌入到wxpython代码中的实现方法
2014/08/11 Python
python抓取百度首页的方法
2015/05/19 Python
如何使用七牛Python SDK写一个同步脚本及使用教程
2015/08/23 Python
使用Python的Bottle框架写一个简单的服务接口的示例
2015/08/25 Python
Python3.4编程实现简单抓取爬虫功能示例
2017/09/14 Python
python模块smtplib实现纯文本邮件发送功能
2018/05/22 Python
如何使用Python 打印各种三角形
2019/06/28 Python
Python操作excel的方法总结(xlrd、xlwt、openpyxl)
2019/09/02 Python
python区分不同数据类型的方法
2019/10/14 Python
python实现小世界网络生成
2019/11/21 Python
python读取ini配置文件过程示范
2019/12/23 Python
利用Python中的Xpath实现一个在线汇率转换器
2020/09/09 Python
Static Nested Class 和 Inner Class的不同
2013/11/28 面试题
客户接待方案
2014/02/26 职场文书
小学生交通安全寄语
2015/02/27 职场文书
2015年端午节国旗下演讲稿
2015/03/19 职场文书
2015年秋季学校开学标语
2015/07/16 职场文书
记一次Mysql不走日期字段索引的原因小结
2021/10/24 MySQL
redis的list数据类型相关命令介绍及使用
2022/01/18 Redis