如何在Spark Scala Dataframe中查找所有具有空值或NA值的列的列表?

时间:2019-07-15 17:20:41

标签: apache-spark

如何查找Spark Scala Dataframe中具有空值或NA值的列名列表?

我尝试使用下面的代码,但没有得到预期的结果。

val cond = df8.columns.map(x => col(x).isNull || col(x) === "NA")

val df = Seq((Some(1.0), Some("NA"), null).toDF("A", "B", "C")

输出列表应包含B和C列

预期结果:List[B,C]

2 个答案:

答案 0 :(得分:1)

您基本上可以过滤每列并按如下方式计算null的数量(在过滤器上添加更多逻辑以根据需要检查null)

showDialog

输出:

df.columns.map(c => (c, df.filter(col(c).isNotNull && !col(c).isNaN).count()))
    .filter(_._2 < 1)
    .map(_._1)

答案 1 :(得分:0)

您可以获取列数组,然后循环并收集每个列值作为集合,并检查集合是否包含空值。

df.columns()-将给出列数组

df.select(“列名”).collect.map(_(0))。toSet.contains(null)-如果整列为空,则为true。