如何查找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]
答案 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。