使用PySpark计算并且不使用groupby进行计数

时间:2018-06-04 21:26:06

标签: python pyspark pyspark-sql

我有一个数据框(testdf),并希望对列(memid)进行计数和不同计数,其中另一列(booking / rental)是不为空或不为空(即。"")

testdf

memid   booking  rental
100        Y 
100
120        Y
100        Y       Y

预期结果:(预订栏不为空/非空)

count(memid)  count(distinct memid)
      3                      2

如果是SQL:

Select count(memid), count(distinct memid) from mydf 
where booking is not null and booking!= ""

在PySpark中:

mydf.filter("booking!=''").groupBy('booking').agg(count("patid"), countDistinct("patid"))

但我只是想要整体计数而不是按照...分组。

1 个答案:

答案 0 :(得分:0)

您只需删除GroupBy并直接使用agg
像这样。

from pyspark.sql import functions as F 
mydf=mydf.filter("booking!=''").agg(F.count("patid"), F.countDistinct("patid"))