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过滤函数filter()使用自定义函数过滤序列实例
Aug 26 Python
Python生成器(Generator)详解
Apr 13 Python
再谈Python中的字符串与字符编码(推荐)
Dec 14 Python
Python实现获取照片拍摄日期并重命名的方法
Sep 30 Python
Python命名空间的本质和加载顺序
Dec 17 Python
Django ORM 自定义 char 类型字段解析
Aug 09 Python
Python列表list常用内建函数实例小结
Oct 22 Python
python+Selenium自动化测试——输入,点击操作
Mar 06 Python
Python的历史与优缺点整理
May 26 Python
Python爬虫爬取博客实现可视化过程解析
Jun 29 Python
pycharm远程连接服务器并配置python interpreter的方法
Dec 23 Python
python数字图像处理之图像的批量处理
Jun 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
通用PHP动态生成静态HTML网页的代码
2010/03/04 PHP
使用bcompiler对PHP文件进行加密的代码
2010/08/29 PHP
zen cart新进商品的随机排序修改方法
2010/09/10 PHP
PHP实现微信商户支付企业付款到零钱功能
2018/09/30 PHP
Laravel框架处理用户的请求操作详解
2019/12/20 PHP
javascript 事件绑定问题
2011/01/01 Javascript
深入document.write()与HTML4.01的非成对标签的详解
2013/05/08 Javascript
一个封装js代码-----展开收起效果示例
2013/07/03 Javascript
jQuery .attr()和.removeAttr()方法操作元素属性示例
2013/07/16 Javascript
JS 弹出层 定位至屏幕居中示例
2014/05/21 Javascript
基于jQuey实现鼠标滑过变色(整行变色)
2015/12/07 Javascript
jQuery获取单击节点对象的方法
2016/06/02 Javascript
JS轮播图实现简单代码
2021/02/19 Javascript
js自定义trim函数实现删除两端空格功能
2018/02/09 Javascript
vue使用vue-i18n实现国际化的实现代码
2018/04/08 Javascript
Vue项目自动转换 px 为 rem的实现方法
2018/10/29 Javascript
Vue-cli3简单使用(图文步骤)
2019/04/30 Javascript
echarts实现折线图的拖拽效果
2019/12/19 Javascript
jquery轮播图插件使用方法详解
2020/07/31 jQuery
[59:00]DOTA2-DPC中国联赛 正赛 Ehome vs PSG.LGD BO3 第一场 3月7日
2021/03/11 DOTA
解析Python编程中的包结构
2015/10/25 Python
Python实现图片转字符画的示例
2017/08/22 Python
Python3实现发送QQ邮件功能(html)
2017/12/15 Python
解决Django数据库makemigrations有变化但是migrate时未变动问题
2018/05/30 Python
Python父目录、子目录的相互调用方法
2019/02/16 Python
Python上下文管理器全实例详解
2019/11/12 Python
很酷的小工具和电子产品商城:GearBest
2016/11/19 全球购物
银行会计业务的个人自我评价
2013/11/02 职场文书
实习生体会的自我评价范文
2013/11/28 职场文书
工作业绩不及格检讨书
2014/10/28 职场文书
爱情保证书
2015/01/17 职场文书
Python中使用ipython的详细教程
2021/06/22 Python
Python面向对象编程之类的概念
2021/11/01 Python
python脚本框架webpy的url映射详解
2021/11/20 Python
国产动画《万圣街》日语配音版制作决定!
2022/03/20 国漫
以下牛机,你有几个
2022/04/05 无线电