Spark更简单的值计数

16
1个回答

18

这只是基本的聚合,不是吗?

df.groupBy($"value").count.orderBy($"count".desc)

Pandas:

import pandas as pd

pd.Series([1, 2, 2, 2, 3, 3, 4]).value_counts()
2    3
3    2
4    1
1    1
dtype: int64

Spark SQL:

Seq(1, 2, 2, 2, 3, 3, 4).toDF("value")
  .groupBy($"value").count.orderBy($"count".desc)
+-----+-----+
|value|count|
+-----+-----+
|    2|    3|
|    3|    2|
|    1|    1|
|    4|    1|
+-----+-----+
如果你想要包括额外的分组列(比如"key"),只需将其放入groupBy中即可。
df.groupBy($"key", $"value").count.orderBy($"count".desc)

我正在尝试将这个应用于 Dask 数据帧的每一行,但是当我定义 UDF 时,由于 $ 符号而出现语法错误。 - Eduardo EPF

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接