如何在pyspark中进行滚动求和?

dvtswwa3  于 2021-07-13  发布在  Spark
关注(0)|答案(1)|浏览(299)

这个问题在这里已经有答案了

python spark使用dataframe按组累计求和(2个答案)
两个月前关门了。
如果列 A 如以下示例所示,我希望 B 其中每个记录是a中当前记录和b中以前记录的总和:

+-------+
| A | B |
+-------+
| 0 | 0 |
| 0 | 0 |
| 1 | 1 |
| 0 | 1 | 
| 1 | 2 |  
| 1 | 3 | 
| 0 | 3 | 
| 0 | 3 |

所以在某种程度上,我会有兴趣考虑到我的操作以前的记录。我知道 F.lag 但我不知道它是怎么工作的。你对如何完成这个手术有什么想法吗?
如果这个想法能用更好的方式表达,我愿意重新措辞。

toe95027

toe950271#

你好像在做a的滚动求和。你可以在窗口上求和。

from pyspark.sql import functions as F, Window

df2 = df.withColumn('B', F.sum('A').over(Window.orderBy('ordering_col')))

但是您需要一个列来排序,否则“previousrecord”没有很好的定义,因为sparkDataframe是无序的。

相关问题