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线程锁(thread)学习示例
Dec 04 Python
理论讲解python多进程并发编程
Feb 09 Python
浅谈pandas中shift和diff函数关系
Apr 08 Python
Python图像处理之gif动态图的解析与合成操作详解
Dec 30 Python
python3实现点餐系统
Jan 24 Python
Python pandas DataFrame操作的实现代码
Jun 21 Python
python编写计算器功能
Oct 25 Python
python中count函数简单用法
Jan 05 Python
关于tf.nn.dynamic_rnn返回值详解
Jan 20 Python
python动态文本进度条的实例代码
Jan 22 Python
Python 如何调试程序崩溃错误
Aug 03 Python
python 如何执行控制台命令与操作剪切板
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
PHP抽象类 介绍
2012/06/13 PHP
php启用zlib压缩文件的配置方法
2013/06/12 PHP
php+jQuery.uploadify实现文件上传教程
2014/12/26 PHP
利用PHP将图片转换成base64编码的实现方法
2016/09/13 PHP
PHP基于curl post实现发送url及相关中文乱码问题解决方法
2017/11/25 PHP
php数据结构之顺序链表与链式线性表示例
2018/01/22 PHP
PHP 图片合成、仿微信群头像的方法示例
2019/10/25 PHP
jquery uaMatch源代码
2011/02/14 Javascript
利用webqq协议使用python登录qq发消息源码参考
2013/04/08 Javascript
js将json格式内容转换成对象的方法
2013/11/01 Javascript
Jquery+asp.net后台数据传到前台js进行解析的方法
2014/05/11 Javascript
手机软键盘弹出时影响布局的解决方法
2016/12/15 Javascript
为什么Vue3.0使用Proxy实现数据监听(defineProperty表示不背这个锅)
2019/10/14 Javascript
Vue 2.0双向绑定原理的实现方法
2019/10/23 Javascript
JavaScript设计模型Iterator实例解析
2020/01/22 Javascript
js实现拾色器插件(ColorPicker)
2020/05/21 Javascript
简化Python的Django框架代码的一些示例
2015/04/20 Python
详解python时间模块中的datetime模块
2016/01/13 Python
Python多维/嵌套字典数据无限遍历的实现
2016/11/04 Python
python连接数据库的方法
2017/10/19 Python
Python 硬币兑换问题
2019/07/29 Python
Python 面向对象之类class和对象基本用法示例
2020/02/02 Python
python3格式化字符串 f-string的高级用法(推荐)
2020/03/04 Python
Python numpy多维数组实现原理详解
2020/03/10 Python
jupyter note 实现将数据保存为word
2020/04/14 Python
lululemon美国官网:瑜伽服+跑步装备
2018/11/16 全球购物
工程造价与财务管理专业应届生求职信
2013/10/06 职场文书
活动总结新闻稿
2014/08/30 职场文书
校友回访母校寄语
2015/02/26 职场文书
大学生村官工作总结2015
2015/04/09 职场文书
退税申请报告怎么写
2015/05/18 职场文书
先进工作者主要事迹材料
2015/11/03 职场文书
Python djanjo之csrf防跨站攻击实验过程
2021/05/14 Python
使用Spring处理x-www-form-urlencoded方式
2021/11/02 Java/Android
Vue全局事件总线你了解吗
2022/02/24 Vue.js
IDEA 2022 Translation 未知错误 翻译文档失败
2022/04/24 Java/Android