pandas实现hive的lag和lead函数 以及 first_value和last_value函数
lag和lead VS shift
该函数的格式如下:
- 第一个参数为列名,
- 第二个参数为往上第n行(可选,默认为1),
- 第三个参数为默认值(当往上第n行为NULL时候,取默认值,如不指定,则为NULL)
lag
lag(字段名,N,默认值) over(partition by 分组字段 order by 排序字段 排序方式)
lead
lead(字段名,N,默认值) over(partition by 分组字段 order by 排序字段 排序方式)
案例:
select
cookieid,
createtime,
url,
row_number() over (partition by cookieid order by createtime) as rn,
LAG(createtime,1,'1970-01-01 00:00:00') over (partition by cookieid order by createtime) as last_1_time,
LAG(createtime,2) over (partition by cookieid order by createtime) as last_2_time
from cookie.cookie4

select
cookieid,
createtime,
url,
row_number() over (partition by cookieid order by createtime) as rn,
LEAD(createtime,1,'1970-01-01 00:00:00') over (partition by cookieid order by createtime) as next_1_time,
LEAD(createtime,2) over (partition by cookieid order by createtime) as next_2_time
from cookie.cookie4;

窗口函数的pandas实现
pandas中使用shift函数来实现lag/lead函数
import pandas as pd
df=pd.read_csv('c:/Users/WQBin/Desktop/data.csv',engine='python', names=['cookieid','createtime','url'])
df['last_url'] = df.sort_values('createtime').groupby('cookieid')['url'].shift(1)
df['next_url'] = df.sort_values('createtime').groupby('cookieid')['url'].shift(-1)
df.sort_values(by=['cookieid','createtime'])

first_value和 last_value VS first()和last()
- FIRST_VALUE 返回组中数据窗口的第一个值
- FIRST_VALUE ( [scalar_expression )OVER ( [ partition_by_clause ] order_by_clause )
- LAST_VALUE 返回组中数据窗口的最后一个值
- LAST_VALUE ( [scalar_expression )OVER ( [ partition_by_clause order_by_clause )
select
cookieid,
createtime,
url,
row_number() over (partition by cookieid order by createtime) as rn,
first_value(url) over (partition by cookieid order by createtime) as first1
from cookie.cookie4;

select
cookieid,
createtime,
url,
row_number() over (partition by cookieid order by createtime) as rn,
last_value(url) over (partition by cookieid order by createtime) as last1
from cookie.cookie4;

窗口函数的pandas实现

df.sort_values(['createtime'], ascending=[ 1]).groupby(['cookieid']).first()

df.sort_values(['createtime'], ascending=[ 1]).groupby(['cookieid']).last()

pandas实现hive的lag和lead函数 以及 first_value和last_value函数的更多相关文章
- SQL Server ->> FIRST_VALUE和LAST_VALUE函数
两个都是SQL SERVER 2012引入的函数.用于返回在以分组和排序后取得最后一行的某个字段的值.很简单两个函数.ORDER BY字句是必须的,PARITION BY则是可选. 似乎没什么好说的. ...
- Hive分析窗体函数之LAG,LEAD,FIRST_VALUE和LAST_VALUE
环境信息:Hive版本号为apache-hive-0.14.0-binHadoop版本号为hadoop-2.6.0Tez版本号为tez-0.7.0 创建表: ),第三个參数为默认值(当往上第n行为NU ...
- ORACLE lag()与lead() 函数
一.简介 lag与lead函数是跟偏移量相关的两个分析函数,通过这两个函数可以在一次查询中取出同一字段的前N行的数据(lag)和后N行的数据(lead)作为独立的列,从而更方便地进行进行数据过滤.这种 ...
- Hive窗口函数之LAG、LEAD、FIRST_VALUE、LAST_VALUE的用法
一.创建表: create table windows_ss ( polno string, eff_date string, userno string ) ROW FORMAT DELIMITED ...
- KingbaseES lag 和 lead 函数
1.简介 lag与lead函数是跟偏移量相关的两个分析函数,通过这两个函数可以在一次查询中取出同一字段的前N行的数据(lag)和后N行的数据(lead)作为独立的列,从而更方便地进行进行数据过滤. 2 ...
- Hive学习之路 (十六)Hive分析窗口函数(四) LAG、LEAD、FIRST_VALUE和LAST_VALUE
数据准备 数据格式 cookie4.txt cookie1, ::,url2 cookie1, ::,url1 cookie1, ::,1url3 cookie1, ::,url6 cookie1, ...
- oracle中LAG()和LEAD()等分析统计函数的使用方法(统计月增长率)
LAG()和LEAD()统计函数能够在一次查询中取出同一字段的前N行的数据和后N行的值.这样的操作能够使用对同样表的表连接来实现,只是使用LAG和 LEAD有更高的效率.下面整理的LAG()和LEAD ...
- oracle lag与lead分析函数简介
lag与lead函数是跟偏移量相关的两个分析函数,通过这两个函数我们可以取到当前行列的偏移N行列的值 lag可以看着是正的向上的偏移 lead可以认为负的向下的偏移 具体我们来看几个例子: 我们先看下 ...
- oracle中LAG()和LEAD()以及over (PARTITION BY)
LAG()和LEAD()统计函数可以在一次查询中取出同一字段的前N行的数据和后N行的值.这种操作可以使用对相同表的表连接来实现,不过使用LAG和 LEAD有更高的效率.以下整理的LAG()和LEAD( ...
随机推荐
- windows下 安装gitlab及其相关图形管理工具
windows下 安装gitlab及其相关图形管理工具 在windows下安装git中文版客户端并连接gitlab 下载git Windows客户端 git客户端下载地址:https://gi ...
- C++Primer 5th Chap9 Sequential Container
vector 可变大小数组,支持快速随机访问(在除了尾部之外部分插入删除元素很慢) deque 双端队列,支持快速随机访问(在头尾插入删除元素很快) list 双向链表,仅支持双向顺序访问(在任何位置 ...
- 【数据结构】Tournament Chart
Tournament Chart 题目描述 In 21XX, an annual programming contest, Japan Algorithmist GrandPrix (JAG) has ...
- 2017 ACM-ICPC 亚洲区(西安赛区)网络赛 Coin 矩阵快速幂
Bob has a not even coin, every time he tosses the coin, the probability that the coin's front face u ...
- (十一)Activitivi5之流程控制网关:连线
一.案例 1.1 需求 我们希望如果是重要情况才需要班主任审批,否则班长审批就行. 1.2 案例 当流程走到“班长审批”任务节点的时候,如果是一般情况,则如下: /** * 完成任务 */ @Test ...
- 搭建SSM环境(淘淘商城)
本文用到的资料: 链接:https://pan.baidu.com/s/1Pk_aI_PRbqRFP9i3o9Xodg 提取码:o4o4 1.1. 数据库 1.1.1. 使用navicat创建数据库连 ...
- ligerui tab 部分记载
打开一个Tab $(".strength_box").click(function () { var id = $(this).attr("data"); va ...
- Google Drive ubuntu
Google尚未发布用于从Ubuntu访问其drive的官方Linux客户端.然开源社区却业已开发完毕非官方之软件包‘grive-tools’. grive乃是Google Drive(在线存储服务) ...
- Java Web-Filter and listener
Java Web-Filter and listener Filter:过滤器 概述 拦截请求,完成一些特殊的功能. 过滤器的作用: 一般用于完成通用的一些操作,例如登录验证(通过session来判断 ...
- ajax:用于创建快速动态网页的技术
ajax是一种用于创建快速动态网页的技术. 异步的javascript和XML(JSON),主要是完成一个局部刷新. 异步:你传输吧,我先干我自个儿的事,你传好了告诉我一声 同步:你传输,我停下活儿看 ...