簡體   English   中英

spark數據幀分組不計算空值

[英]spark dataframe groupping does not count nulls

我有一個 spark DataFrame,它按與計數聚合的列分組:

df.groupBy('a').agg(count("a")).show

+---------+----------------+
|a        |count(a)        |
+---------+----------------+
|     null|               0|
|      -90|           45684|
+---------+----------------+


df.select('a').filter('aisNull').count

返回

warning: there was one feature warning; re-run with -feature for details
res9: Long = 26834

這清楚地表明最初沒有計算空值。

這種行為的原因是什么? 我本來希望(如果分組結果中包含null )正確地看到計數。

是的, count應用到特定的列不計空值。 如果要包含空值,請使用:

df.groupBy('a).agg(count("*")).show

這種行為的原因是什么?

SQL-92 標准。 特別是(強調我的):

令 T 為 <set function specification> 的參數或參數源。

如果指定了 COUNT(*),則結果是 T 的基數。

否則,令 TX 為單列表,它是將 <value expression> 應用於 T 的每一行並消除空值的結果

如果指定了 DISTINCT,則令 TXA 為從 TX 中消除冗余重復值的結果。 否則,令 TXA 為 TX。

如果指定了 COUNT,則結果是 TXA 的基數。

value_counts(dropna=False) pyspark 的等效項:

from pyspark.sql import functions as f
df.groupBy('a').agg(f.count('*')).orderBy('count(1)',ascending=False).show()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM