【问题标题】:Derived column in pySpark using two columns and previous row's valuepySpark 中的派生列,使用两列和前一行的值
【发布时间】:2018-12-20 08:10:43
【问题描述】:

我想在我的 spark 数据框上创建一列,对两列进行操作。

我想创建使用以下公式计算的列Areas

( (Pct_Buenos_Acum[i]-Pct_Buenos_Acum[i-1]) * (Pct_Malos_Acum[i]+Pct_Malos_Acum[i-1]) ) / 2

我试过这个:

w = Window.rowsBetween(Window.unboundedPreceding, Window.currentRow)

df= df.withColumn('Areas', (( ( col('Pct_Acum_buenos')-col('Pct_Acum_buenos' ) )*(col('Pct_Acum_malos')+col('Pct_Acum_malos')))/2).over(w))

附上我目前所拥有的印刷品

【问题讨论】:

    标签: python apache-spark pyspark apache-spark-sql


    【解决方案1】:

    Here 是一种在 pySpark 中访问先前值的方法。顺其自然。

    from pyspark.sql import functions as F
    
    # adding indexs column to use in order by
    df = df.withColumn('index', F.monotonicallyIncreasingId)
    
    w = Window.partitionBy().orderBy('index')
    
    df = df.withColumn('Areas', (((col('Pct_Acum_buenos')-F.lag(col('Pct_Acum_buenos')).over(w))*(col('Pct_Acum_malos')+F.lag(col('Pct_Acum_malos')).over(w)))/2)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-08-20
      • 2017-12-31
      • 1970-01-01
      • 1970-01-01
      • 2023-03-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多