我有一个数据框并且正在运行以下查询
sportsData.groupBy("category").agg(count(lit(1)).alias("numberOfRecords")).show(false)
输出
+---------------+---------------+
|category |numberOfRecords|
+---------------+---------------+
|football |1 |
|tennis |2 |
|cricket |2 |
+---------------+---------------+
我必须找到每个类别的平均值。为此,我知道我可以在按类别分组后运行 agg mean 函数。但由于 numberOfRecords 列在我的数据框中不是真正的列,因此我无法获得平均值。我应该如何进行?
答案 0 :(得分:0)
这可以从下面的查询中解决
sportsData.groupBy("category").agg(count(lit(1)).alias("numberOfRecords")).toDF().groupBy("category").agg(mean("numberOfRecords")).show(false)
输出如下
+---------------+--------------------+
|category |avg(numberOfRecords)|
+---------------+--------------------+
|football |1.0 |
|Tennis |2.0 |
|cricket |2.0 |
+---------------+--------------------+