【发布时间】:2020-04-13 02:24:37
【问题描述】:
我有一个函数可以计算整个数据帧的预测值和实际值的 RMSE:
def calculate_rmse(df, actual_column, prediction_column):
RMSE = F.udf(lambda x, y: ((x - y) ** 2))
df = df.withColumn(
"RMSE", RMSE(F.col(actual_column), F.col(prediction_column))
)
rmse = df.select(F.avg("RMSE") ** 0.5).collect()
rmse = rmse[0]["POWER(avg(RMSE), 0.5)"]
return rmse
test = calculate_rmse(my_df, 'actuals', 'preds')
3690.4535
我想将此应用于groupby 语句,但是当我这样做时,我得到以下信息:
df_gb = my_df.groupby('start_month', 'start_week').agg(calculate_rmse(my_df, 'actuals', 'preds'))
all exprs should be Column
Traceback (most recent call last):
File "/usr/lib/spark/python/lib/pyspark.zip/pyspark/sql/group.py", line 113, in agg
assert all(isinstance(c, Column) for c in exprs), "all exprs should be Column"
AssertionError: all exprs should be Column
有人能指出我正确的方向吗?我对 Pyspark 还很陌生。
【问题讨论】:
标签: python apache-spark pyspark apache-spark-sql pyspark-sql