【问题标题】:Pyspark column population with computation具有计算功能的 Pyspark 列填充
【发布时间】:2018-01-08 13:28:18
【问题描述】:

我被这个问题困扰,下面是我的数据框

a   b   c

0   0   126

30  0   0

现在我需要用公式 c(previous-a+b) 重新填充 c 列,结果数据框应为 .从下方数据框 96 填充为 (126-30+0)

a b c

0 0 126

30 0 96

请帮助我跨过这个障碍

【问题讨论】:

  • 亲爱的 Shankar,我尝试了滞后,但我得到 b c 列的空值
  • 我已经更新了答案,你可以检查一下吗?

标签: r hadoop apache-spark pyspark


【解决方案1】:

您可以使用滞后函数来获取之前的值,如下所示

df.withColumn("id", monotonically_increasing_id()) 
  .withColumn("c", lag($"c", 1, 126).over(Window.orderBy("id")) - $"a" + $"b") 
  .drop("id").show(false)

希望这会有所帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-07-05
    • 2018-12-07
    • 1970-01-01
    • 1970-01-01
    • 2020-01-17
    • 1970-01-01
    • 2021-06-23
    • 1970-01-01
    相关资源
    最近更新 更多