You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spark报错:'GroupedData'无'orderBy'属性,求动漫类型平均评分

问题原因与解决方法

错误原因

你遇到的'GroupedData' object has no attribute 'orderBy'错误,核心是调用顺序错误:

  • groupBy("Genre")执行后得到的是GroupedData对象,这个对象仅支持聚合类方法(比如avg()、sum()),并不包含orderBy排序方法。
  • 只有先调用聚合方法(比如avg())生成新的DataFrame后,才能使用orderBy进行排序。

正确实现步骤

假设你的评分列名为Rating,按以下流程操作:

1. 分组计算平均评分

先通过聚合操作得到每个类型的平均评分,生成DataFrame:

# 替换Rating为你实际的评分列名
genre_avg_df = df.groupBy("Genre").avg("Rating")

2. (可选)对结果排序

如果需要按评分高低排序,对上面生成的DataFrame调用orderBy:

# 按平均评分降序排列,ascending=False表示从高到低
sorted_genre_avg = genre_avg_df.orderBy("avg(Rating)", ascending=False)

3. 转换为目标字符串格式

通过collect()取出数据,拼接成你想要的格式:

# 循环拼接每个类型和对应的平均评分,保留1位小数
result_str = " ".join([f"{row['Genre']} - {row['avg(Rating)']:.1f}" for row in sorted_genre_avg.collect()])
print(result_str)

错误写法示例(避坑)

你大概率是直接在groupBy后调用了orderBy,比如这种错误代码:

# 错误:GroupedData没有orderBy方法
df.groupBy("Genre").orderBy("Rating")

内容的提问来源于stack exchange,提问作者Ignaciogg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 10:01:20