多列上的多个聚合

Posted

技术标签:

【中文标题】多列上的多个聚合【英文标题】:Multiple aggregations on multiple columns 【发布时间】:2019-09-27 16:46:19 【问题描述】:

我在 Pyspark 框架中使用 Python。 我正在尝试使用 groupby 对不同的列应用不同的聚合

我有一个包含 col1col2col3col4 列的 df 我想做类似的事情: df.groupby("col1").sum("col2", "col3").avg("col4")

但我收到一个错误:

'DataFrame' 对象没有属性 'avg' 回溯(最近一次通话最后): getattr 中的文件“/usr/lib/spark/python/lib/pyspark.zip/pyspark/sql/dataframe.py”,第 1301 行 "'%s' 对象没有属性 '%s'" % (self.class.name, name)) AttributeError: 'DataFrame' 对象没有属性 'avg'

【问题讨论】:

multiple criteria for aggregation on pySpark Dataframe 和 Multiple Aggregate operations on the same column of a spark dataframe 和 Spark SQL: apply aggregate functions to a list of columns 的可能重复 【参考方案1】:

这就是我在模块中的做法:

import pyspark.sql.functions as Functions

df2=df.groupBy('col1').agg(Functions.sum('col2'),Functions.sum('col3'),Functions.avg('col4'))

【讨论】:

以上是关于多列上的多个聚合的主要内容,如果未能解决你的问题,请参考以下文章

Spark中多列的窗口聚合

Pandas:自定义 WMAPE 函数聚合函数到多列而没有 for 循环?

60种特征工程操作:使用自定义聚合函数

多列条件聚合

Elasticsearch 多个聚合或术语和同一列上的聚合

获取熊猫 groupby 对象中多列的最大聚合