我有一个火花数据框架,该框架由contrement contregement contregement:
汇总: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
不计算null值。如果要包含零值,请使用:
df.groupBy('a).agg(count("*")).show
这种行为的原因是什么?
SQL-92标准。特别是(强调我的):
令t为a<设置函数规范的参数或参数来源>。
如果指定了计数(*),则结果是t。
的基数
否则,让TX为单列表,是将< value表达式>在t 的每一行中应用并消除null值。
的结果。
如果指定了不同的情况,请让TXA是消除TX中冗余重复值的结果。否则,让TXA成为 tx。
如果指定计数,则 结果是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()