gpt4 book ai didi

python - PySpark 1.5 Groupby Sum 用于 Dataframe 中的新列

转载 作者:行者123 更新时间:2023-12-02 21:06:17 25 4
gpt4 key购买 nike

我正在尝试使用 groupBy 和 sum(使用 PySpark 1.5)在 Spark Dataframe 中创建一个新列(“newaggCol”)。我的数字列已转换为 Long 或 Double。用于形成 groupBy 的列是 String 和 Timestamp。我的代码如下

df= df.withColumn("newaggCol",(df.groupBy([df.strCol,df.tsCol]).sum(df.longCol)))

我对错误的回溯是到那一行。并声明:

ValueError: Cannot convert column into bool: please use '&' for 'and',     '|' for 'or', '~' for 'not' when building DataFrame boolean expressions.

我觉得我一定是调用函数不正确?

最佳答案

使用 SQL 聚合是不可能的,但您可以使用窗口函数轻松获得所需的结果

import sys
from pyspark.sql.window import Window
from pyspark.sql.functions import sum as sum_

w = (Window()
.partitionBy(df.strCol, df.tsCol)
.rowsBetween(Window.unboundedPreceding, Window.unboundedFollowing))

df.withColumn("newaggCol", sum_(df.longCol).over(w))

关于python - PySpark 1.5 Groupby Sum 用于 Dataframe 中的新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35849304/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com