pyspark groupby 表示使用字典变量

pyspark groupby mean using dictionary variable

我正在尝试使用 mean 函数作为字典变量来执行 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 class 的均值函数,但失败并出现同样的错误。

如何修复此错误?

您需要在 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)