lag
该函数的格式如下:
lag(字段名,N) over(partition by 分组字段 order by 排序字段 排序方式)
lag括号里理由两个参数,第一个是字段名,第二个是数量N,这里的意思是,取分组排序后比该条记录序号小N的对应记录的指定字段的值,如果字段名为ts,N为1,就是取分组排序后上一条记录的ts值。
lead
该函数的格式如下:
lead(字段名,N) over(partition by 分组字段 order by 排序字段 排序方式)
lead括号里理由两个参数,第一个是字段名,第二个是数量N,这里的意思是,取分组排序后比该条记录序号大N的对应记录的对应字段的值,如果字段名为ts,N为1,就是取分组排序后下一条记录的ts值。
窗口函数的pandas实现
pandas中使用shift函数来实现lag/lead函数
df = pd.DataFrame({'A':[12,20,12,5,18,11,18],
'C':['A','B','A','B','B','A','A']})
df['lag'] = df.sort_values('A').groupby('C')['A'].shift(1)
df['lead'] = df.sort_values('A').groupby('C')['A'].shift(-1)
print(df)
可以看到,当shift函数中的数字为正数时,我们就实现了lag的功能,当数字为负数时,实现的是lead的功能。不过这里切记,一定要排序哦,否则可能出现下面的结果:
df = pd.DataFrame({'A':[12,20,12,5,18,11,18],
'C':['A','B','A','

本文介绍了如何使用pandas的shift函数实现类似Hive中的lag和lead功能。通过调整shift参数,可以获取分组排序后前一条(lag)或后一条(lead)记录的特定字段值,但需注意先进行排序操作以确保正确性。
最低0.47元/天 解锁文章
938

被折叠的 条评论
为什么被折叠?



