-1

我有一个数据框,我正在运行以下查询

sportsData.groupBy("category").agg(count(lit(1)).alias("numberOfRecords")).show(false)

输出

+---------------+---------------+
|category       |numberOfRecords|
+---------------+---------------+
|football       |1              |
|tennis         |2              |
|cricket        |2              |
+---------------+---------------+

我必须找到每个类别的平均值。为此,我知道我可以在按类别分组后运行 agg mean 函数。但由于 numberOfRecords 列不是我的数据帧中的真实列,我无法获得平均值。我应该如何进行?

4

1 回答 1

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                 |
+---------------+--------------------+
于 2021-02-23T02:11:56.347 回答