Datafram中新列的PySpark 1.5 Groupby Sum

2024-10-01 07:35:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试使用groupBy和sum(使用pyspark1.5)在Spark数据帧中创建一个新列(“newaggCol”)。我的数字列被转换为Long或Double。用于形成groupBy的列是String和Timestamp。我的代码如下

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

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

^{pr2}$

我觉得我一定是在错误地调用函数?在


Tags: 数据代码dfstring错误数字timestamplong
1条回答
网友
1楼 · 发布于 2024-10-01 07:35:51

使用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(-sys.maxsize, sys.maxsize))

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

相关问题 更多 >