计算Spark数据框列中的“是”数

时间:2018-06-20 22:16:18

标签: apache-spark apache-spark-sql

我正在尝试计算Spark数据框的一栏中“是”的数量。

输入DF:

col_1

yes
no
yes
no

操作:

2

代码:

df.groupBy("col_1").agg(count("col_1")).collect()

然后遍历数组以获取值。有这样做的有效方法吗?

2 个答案:

答案 0 :(得分:1)

为什么不简单过滤:

df.filter('col_1 === "yes").count

df.groupBy('col_1).agg(sum(when($"col_1" === "yes", 1).otherwise(0)).as("yes_cnt")).show

答案 1 :(得分:1)

您可以将selectsumwhen内置函数一起使用

pyspark

from pyspark.sql import functions as f
df.select(f.sum(f.when(f.col('col_1') == 'yes', 1)).alias('count')).show(truncate=False)

scala

import org.apache.spark.sql.functions._
df.select(sum(when(col("col_1") === "yes", 1)).as("count")).show(false)

应该给您

+-----+
|count|
+-----+
|2    |
+-----+

我希望答案会有所帮助