多列上的多个聚合
Posted
技术标签:
【中文标题】多列上的多个聚合【英文标题】:Multiple aggregations on multiple columns 【发布时间】:2019-09-27 16:46:19 【问题描述】:我在 Pyspark 框架中使用 Python。
我正在尝试使用 groupby
对不同的列应用不同的聚合
我有一个包含 col1
、col2
、col3
、col4
列的 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'))
【讨论】:
以上是关于多列上的多个聚合的主要内容,如果未能解决你的问题,请参考以下文章