Pyspark滚动总和(正确对齐)

7ivaypg9  于 9个月前  发布在  Spark
关注(0)|答案(2)|浏览(108)

我想使用pyspark来做以下事情;我有一个数组“cost_df”,我需要首先获得名为“cost”的列的1的滞后,然后计算同一列在大小为4的窗口上的滚动和(右对齐)。我非常感谢你的帮助。
我试探着:
cond=Window.partitionBy(“year”)cond 1 =Window.partitionBy(“year”).rowsBetween(-3,0)
df_cost=df_cost.withColumn(“cost_calc”,sum(lag(col(“cost”),1).over(cond)).over(cond 1))
这似乎是不正确的。请帮助。

monwx1rj

monwx1rj1#

你提到的操作依赖于你的行的顺序(因为你想得到“前一行”)。因此,你必须将orderBy添加到你的窗口定义中。也许这就是你想要的partitionBy?

anauzrmj

anauzrmj2#

谢谢。很抱歉我说的不完整。是的,我确实试过了:
cond=Window.partitionBy(“year”)cond1=Window.partitionBy(“year”).orderBy(“quarter”).rowsBetween(-3,0)
df_cost=df_cost.withColumn(“cost_calc”,sum(lag(col(“cost”),1).over(cond)).over(cond 1))
但结果似乎是错的。

相关问题