微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在 Pyspark 中创建一个序列,该序列在行从 0 更改为 1 时重置,并在全部为 1 时递增

如何解决如何在 Pyspark 中创建一个序列,该序列在行从 0 更改为 1 时重置,并在全部为 1 时递增

我有一个像这样的 pyspark 数据框,需要 SEQ 输出,如下所示:

R_ID    ORDER   SC_ITEM seq
A   1       0
A   3   1   1
A   4   1   2
A   5   1   3
A   6   1   4
A   7   1   5
A   8   1   6
A   9   1   7
A   10  0   0
A   11  1   1
A   12  0   0
A   13  1   
A   14  0   
A   15  1   1
A   16  1   2
A   17  1   3
A   18  1   4
A   19  1   5
A   20  1   6
A   21  0   0
A   22  0   0
B   1   0   0
B   2   1   1
C   1   1   1
C   2   1   2

不确定数据是否正确显示。所以附上图片enter image description here

我做了这样的事情:

RN = Window().orderBy(lit('A'))


.when(((F.col("R_ID")==(lag(F.col("R_ID"),1).over(RN))) & (F.col("SC_ITEM")== 1)),(F.col("SC_ITEM") + (lag(F.col("SEQ"),1).over(RN))))\

不确定我是否可以领先或落后于 SEQ。请帮助如何做到这一点

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。