首页 > 解决方案 > 像 SAS 那样逐行保留 Pyspark 中的值

问题描述

我们有以下预期和实际数据集。请帮助我保留功能,以便在 rank=2 之后直到分区的排名结束。

我已经使用row_number().over(Window.partitionBy('Code').orderBy('Code'))逻辑计算了排名。

如您所见,retain功能旨在结转行 if 的前一个值null,否则选取该行中的下一个值并结转,直到我们在分区的后续行中获得非空值。

我尝试使用df.withColumn()方法来计算Rate列,但我无法在 pyspark 代码中继承保留逻辑。

实际输出:

代码 速度
第一的 无效的 1
第一的 99 2
第一的 无效的 3
第一的 无效的 4
第一的 100 5
第一的 无效的 6

预期输出:

代码 速度
第一的 无效的 1
第一的 99 2
第一的 99 3
第一的 99 4
第一的 100 5
第一的 100 6

标签: pysparksas

解决方案


推荐阅读