我想计算DataFrame中所有列的不同值的数量。
说,我有一个像这样的DataFrame:
vh
我想要另一种格式的DataFrame(或任何其他结构):
x y z
-----
0 0 0
0 1 1
0 1 2
最有效的方法是什么?
答案 0 :(得分:1)
您可以使用countDistinct
来计算不同的值;要将其应用于所有列,请在列上使用map
来构造表达式列表,然后使用 varargs 语法将其应用于agg
函数:
val exprs = df.columns.map(x => countDistinct(x).as(x))
df.agg(exprs.head, exprs.tail: _*).show
+---+---+---+
| x| y| z|
+---+---+---+
| 1| 2| 3|
+---+---+---+