pyspark windows函数中lag\lead用法

用于增加排名信息,rank

需求一:根据用户id进行排序,增加排名列。

from pyspark.sql import Window
#新增列名称:rownumber
df3 = df2.withColumn("rownumber",F.row_number().over(Window.orderBy("id")))

需求二:根据不同用户类型,结合用户id 进行排序,增加列排名。

#选择desc,esc定义升序、降序。partition中可选多字段。
df3= df2.withColumn("RANKING",F.row_number().over(Window.partitionBy(["CONS_type"]).orderBy(desc("id"))))

用户数据平移lag,lead

需求三:对一列数据进行平移,实现行数据之间的计算

#定义窗口信息:数据窗口根据ID进行分区,根据ID,DATA_DATE进行排序。
window = Window.orderBy("ID","DATA_DATE").partitionBy("ID")
#将列'R'进行平移,新增一列'R_1'。lead是第二行平移到第一行,lag是第一行平移到第二行,结合实际需求进行选择。
df = df.withColumn('R_1',lead(col('R')).over(window))

pyspark中lead\lag函数只能结合窗口函数使用,窗口函数的逻辑和groupby类似。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值