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)
我正在尝试使用 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)