Spark DataFrame 获取所有列的空计数
Spark DataFrame Get Null Count For All Columns
我有一个 DataFrame,我想在其中获取总空值计数,并且我有以下一般对所有列执行此操作的方法:
首先我的 DataFrame 只包含一列(为简单起见):
val recVacDate = dfRaw.select("STATE")
当我使用简单的过滤器进行打印时,我看到了以下内容:
val filtered = recVacDate.filter("STATE is null")
println(filtered.count()) // Prints 94051
但是当我使用下面这段代码时,结果只得到 1,我不明白为什么?
val nullCount = recVacDate.select(recVacDate.columns.map(c => count(col(c).isNull || col(c) === "" || col(c).isNaN).alias(c)): _*)
println(nullCount.count()) // Prints 1
关于 nullCount 有什么问题有什么想法吗?该列的数据类型是字符串。
这种修复方式:
df.select(df.columns.map(c => count(when(col(c).isNull || col(c) === "" || col(c).isNaN, c)).alias(c)): _*)
注意在计数后使用 when 子句。
我有一个 DataFrame,我想在其中获取总空值计数,并且我有以下一般对所有列执行此操作的方法:
首先我的 DataFrame 只包含一列(为简单起见):
val recVacDate = dfRaw.select("STATE")
当我使用简单的过滤器进行打印时,我看到了以下内容:
val filtered = recVacDate.filter("STATE is null")
println(filtered.count()) // Prints 94051
但是当我使用下面这段代码时,结果只得到 1,我不明白为什么?
val nullCount = recVacDate.select(recVacDate.columns.map(c => count(col(c).isNull || col(c) === "" || col(c).isNaN).alias(c)): _*)
println(nullCount.count()) // Prints 1
关于 nullCount 有什么问题有什么想法吗?该列的数据类型是字符串。
这种修复方式:
df.select(df.columns.map(c => count(when(col(c).isNull || col(c) === "" || col(c).isNaN, c)).alias(c)): _*)
注意在计数后使用 when 子句。