这里没有过滤器。双方
col("is_fav") == 1并
col("is_fav") ==0)都只是布尔表达式,并
count不会真正关心他们的价值,只要它被定义。
您可以通过多种方法来解决此问题,例如,使用simple
sum:
from pyspark.sql.functions import sum, absgpd = df.groupBy("f")gpd.agg( sum("is_fav").alias("fv"), (count("is_fav") - sum("is_fav")).alias("nfv"))
或将忽略的值设为未定义(也称为
NULL):
exprs = [ count(when(col("is_fav") == x, True)).alias(c) for (x, c) in [(1, "fv"), (0, "nfv")]]gpd.agg(*exprs)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)