Python在groupby分组后提取指定位置记录方法

yipeiwu_com6年前Python基础

在进行数据分析、数据建模时,我们首先要做的就是对数据进行处理,提取我们需要的信息。下面为大家介绍一些groupby的用法,以便能够更加方便地进行数据处理。

我们往往在使用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分组后提取指定位置记录方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持【听图阁-专注于Python设计】。

相关文章

python 将dicom图片转换成jpg图片的实例

主要原理:调整dicom的窗宽,使之各个像素点上的灰度值缩放至[0,255]范围内。 使用到的python库:SimpleITK 下面是一个将dicom(.dcm)图片转换成jpg图片的...

Python读取txt某几列绘图的方法

晚上帮同学用Python脚本绘图,大概需求是读取一个txt文件的两列分别作为x和y的值,绘图即可,代码如下: #coding:utf-8 import numpy as np imp...

Django中提供的6种缓存方式详解

前言 由于Django是动态网站,所有每次请求均会去数据进行相应的操作,当程序访问量大时,耗时必然会更加明显,最简单解决方式是使用:缓存,缓存将一个某个views的返回值保存至内存或者m...

Python 实现文件打包、上传与校验的方法

不多说,我们直接上源码: # -*- coding:UTF-8 -*- ''' 实现文件打包、上传与校验 Created on 2018年1月12日 @author: liuyazh...

用不到50行的Python代码构建最小的区块链

用不到50行的Python代码构建最小的区块链

译者注:随着比特币的不断发展,它的底层技术区块链也逐步走进公众视野,引起大众注意。本文用不到50行的Python代码构建最小的数据区块链,简单介绍了区块链去中心化的结构与其实现原理。...