python - 如何将一列除以pyspark中的其他几个子列?
问题描述
我需要将以下 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"))
解决方案
您可以使用窗口函数而不是 group by:
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'))
)
推荐阅读
- html - CSS : 更改输入 (type="text") 使文本从输入的开头开始
- machine-learning - BERT - 将输入传递给中间层
- c# - 如何在替换空格时删除单个前导空格?
- php - WP ALL IMPORT 不更新库存
- javascript - 用于对混合数据数据集进行排序的 JavaScript 程序
- cron - 获取 cron expession 描述的逻辑或 java 代码是什么?
- python - 如何使用 python 显示嵌套循环
- symfony - Symfony 记录器无法写入日志文件
- docker - Quarkus:本地容器缺少 GLIBC_2.32
- visual-studio-code - vscode'Restart'调试器调用preLaunchTask,我不希望它