pyspark groupby意思是使用字典变量

时间:2018-10-09 06:25:21

标签: pyspark pyspark-sql

我正在尝试使用均值函数作为字典变量来执行pyspark数据帧的groupby均值。

from pyspark.sql import functions as F
_func= {'mean' : F.mean}
df.groupby('name')._func['mean']()

但这失败并显示错误

'AttributeError GroupedData object has no attribute _func'

我也尝试从pyspark.sql.group导入GroupedData类的均值函数,但是它失败并出现相同的错误。

如何解决此错误?

1 个答案:

答案 0 :(得分:0)

您需要在agg中传递字典。

df = df.groupby('name').agg({'column_name': 'mean'})

如果要使用函数字典,请像这样使用它,

from pyspark.sql import functions as F
_func= {'mean' : F.mean}
df = df.groupby('name').agg(_f['mean']())

编辑:

根据评论中提到的要求,这是我能提出的唯一解决方案,

df = df.groupby('name').agg(*[_f['mean'](x) for x in df.columns])
cols_to_delete = [_c for _c in df.columns if df.where(F.col(_c).isNotNull()).count() == 0]
df = df.drop(*cols_to_delete)