【问题标题】:How to divide a column by few other sub columns in pyspark?如何将一列除以pyspark中的其他几个子列?
【发布时间】:2021-08-12 18:35:01
【问题描述】:

我需要将以下python代码转换成pyspark。

df['GRN_ratio'] = df['GRN Quantity']/ df.groupby(['File No','Delivery Note Number'])['GRN 
                  Quantity'].transform(sum)

为此,我正在使用以下 Pyspark 代码。但我没有得到预期的输出。

df.groupby(['File No','Delivery Note Number']).agg(F.sum('GRN Quantity').alias('GRN_Sum')))
           .withColumn("GRN_ratio", F.col("GRN Quantity")/F.col("GRN_Sum"))

【问题讨论】:

    标签: python apache-spark pyspark group-by aggregate-functions


    【解决方案1】:

    您可以使用窗口功能代替分组:

    from pyspark.sql import functions as F, Window
    
    df2 = df.withColumn('GRN_ratio',
        F.col('GRN Quantity') / 
        F.sum('GRN Quantity').over(Window.partitionBy('File No','Delivery Note Number'))
    )
    

    【讨论】:

      猜你喜欢
      • 2020-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-11
      • 2021-08-12
      • 2023-02-07
      相关资源
      最近更新 更多