我正在尝试计算Spark数据框的一栏中“是”的数量。
输入DF:
col_1
yes
no
yes
no
操作:
2
代码:
df.groupBy("col_1").agg(count("col_1")).collect()
然后遍历数组以获取值。有这样做的有效方法吗?
答案 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)
您可以将select
与sum
和when
内置函数一起使用
from pyspark.sql import functions as f
df.select(f.sum(f.when(f.col('col_1') == 'yes', 1)).alias('count')).show(truncate=False)
import org.apache.spark.sql.functions._
df.select(sum(when(col("col_1") === "yes", 1)).as("count")).show(false)
应该给您
+-----+
|count|
+-----+
|2 |
+-----+
我希望答案会有所帮助