使用 PySpark DataFrame 聚合函数重命名列

111

我正在使用PySpark DataFrames分析一些数据。假设我有一个DataFrame df需要进行聚合:

(df.groupBy("group")
   .agg({"money":"sum"})
   .show(100)
)

这将会给我:

group                SUM(money#2L)
A                    137461285853
B                    172185566943
C                    271179590646

聚合函数可以正常工作,但我不喜欢新的列名SUM(money#2L)。是否有一种方法可以从.agg 方法中将此列重命名为更易读的名称?也许更类似于在 dplyr 中做的事情:

df %>% group_by(group) %>% summarise(sum_money = sum(money))
11个回答

0
这个晚了一些,但我认为这是一个比硬编码特定函数更通用的解决方案,也比事后尝试重命名更安全。
import pyspark.sql.functions as sf

y = {"money":"sum"}

df.groupBy("group").agg(
    *[ getattr(sf, fun)(col).alias(col) for col, fun in y.items() ]
)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接