我有一个 Dataframe
test = spark.createDataFrame([('bn', 12452, 221), ('mb', 14521, 330),('bn',2,220),('mb',14520,331)],['x','y','z'])
test.show()
我需要根据一个条件计算行数:
test.groupBy("x").agg(count(col("y")>12453),count(col("z")>230)).show()
其给出了
+---+------------------+----------------+
| x|count((y > 12453))|count((z > 230))|
+---+------------------+----------------+
| bn| 2| 2|
| mb| 2| 2|
+---+------------------+----------------+
它只是行数而不是特定条件下的行数。
4条答案
按热度按时间piok6c0g1#
count
不会对 Trues求和,它只计算非空值的数量。要计算 True 值,需要将条件转换为1 / 0,然后sum
:92dk7w1h2#
根据@Psidom的答案,我的答案如下
0mkxixxg3#
由于Spark 3.0.0存在
count_if(exp)
,请参见Spark函数文档ct3nt3jp4#
count函数跳过
null
值,因此您可以尝试执行以下操作:且还在此存储库中起作用:戈朗