[英]Pivot on Spark dataframe returns unexpected nulls on only one of several columns
[英]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.