Python在groupby分组后提取指定位置记录
2018-01-12 15:26
1321 查看
在进行数据分析、数据建模时,我们首先要做的就是对数据进行处理,提取我们需要的信息。下面为大家介绍一些groupby的用法,以便能够更加方便地进行数据处理。
我们往往在使用groupby进行信息提取时,往往是求分组后样本的一些统计量(max、min,var等)。如果现在我们希望取一下分组后样本的第二条记录,倒数第三条记录,这个该如何操作呢?我们可以通过first、last来提取分组后第一条和最后一条样本。但如果我们要取指定位置的样本,就没有现成的函数。需要我们自己去写了。下面我就为大家介绍如何实现上面的功能。
1)数据介绍
action表共有3列:userid、actionType和actionTime,分别代表用户id,用户行为类型和行为发生时间。具体格式如下图所示:
2)分组操作
3)取数操作
①不同用户第二次/倒数第二次操作时间
这样我们就可以提取分组后数据任意位置的样本了。
我们往往在使用groupby进行信息提取时,往往是求分组后样本的一些统计量(max、min,var等)。如果现在我们希望取一下分组后样本的第二条记录,倒数第三条记录,这个该如何操作呢?我们可以通过first、last来提取分组后第一条和最后一条样本。但如果我们要取指定位置的样本,就没有现成的函数。需要我们自己去写了。下面我就为大家介绍如何实现上面的功能。
1)数据介绍
action表共有3列:userid、actionType和actionTime,分别代表用户id,用户行为类型和行为发生时间。具体格式如下图所示:
2)分组操作
a = action.groupby('userid') b = action.groupby('userid')['actionTime'] type(a) type(b)分组后我们可以看到a和b的数据类型是DataFrameGroupBy和SeriesGroupBy
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分组后提取指定位置记录方法
- python3.4.3实现txt文本指定字符提取
- MySQL使用GROUP_CONCAT()函数按ID分组将多条记录的某个字段以逗号或者指定分隔号隔开成一条记录
- 【python】去掉字符串中某个指定位置的字符的几种方法
- python通过某个字段将记录分组
- python之获取指定IP的地理位置详解
- Python中的分组函数(groupby、itertools)
- 选择、分组、引用,指定匹配的位置
- 关于提取电脑软硬件信息并保存指定位置的VBS
- groupby查询分组后按条件查询所需要的记录
- 深度学习中图像的指定图像位置的裁剪处理-使用python、opencv
- Python实现判断并移除列表指定位置元素的方法
- Python_删除/创建指定目录及其下所有子目录的文件,该文件记录当前文件夹的内容
- python使用xlrd实现检索excel中某列含有指定字符串记录的方法
- 如何从文件中提取指定位置的数据????
- Python中字符串连接、删除数组中指定元素、记录脚本运行时间
- python里使用正则表达式的search()函数实现指定位置搜索
- Python自动化 - Windows开发环境下提取修改过的文件并压缩上传到指定的FTP
- Python:字符串中指定位置插入一个字符
- python中Groupby使用(四)-通过函数进行分组