pyspark - 像 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 |
解决方案
推荐阅读
- grafana - 如何使用 Grafana 设置 Prometheus Operator 以启用基本 Kubernetes 监控
- javascript - 为 Google 图表格式化数组/对象数据
- python - 将工作目录更改为最近生成的目录
- python - Pandas 数据框:根据实际日期和最长 7 天仅保留行
- javascript - 将 JS 中的 HTML 实体解码为文本框值
- vue.js - 在计算属性中使用 vuex getter
- r - 按相同 ID 对所有列求和
- angular - 角度如何在不丢失他们传递给我的查询字符串的情况下刷新页面
- python-3.x - 查看特定值的列表列表
- python - 为什么我的 for 在 remove 之后会跳转一些术语?[Python]