如何将一列除以pyspark中的其他几个子列?

Posted

技术标签:

【中文标题】如何将一列除以pyspark中的其他几个子列?【英文标题】:How to divide a column by few other sub columns in 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"))

【问题讨论】:

【参考方案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'))
)

【讨论】:

以上是关于如何将一列除以pyspark中的其他几个子列?的主要内容,如果未能解决你的问题,请参考以下文章

如何将每一列映射到pyspark数据框中的其他列?

excel里面怎么将一列数据平均的分成多列

如何将列除以 Spark DataFrame 中的总和

将一列的值除以另一列

SQL 怎么将一列中的数据按一个分隔符分成多列显示

SQL如何将一列数据批量修改 将该列数据本身加一