spark - 如何有效地从数据框中删除所有选定列都包含空值的行?

时间:2021-01-30 09:56:57

标签: scala apache-spark

我有一些 dataframe 有很多列和列名列表。
如何从列表中删除 all 列中包含 nulls 的这些行?

3 个答案:

答案 0 :(得分:1)

您可以使用 df.na.drop 并指定 all 和一系列列名。然后,仅当该行中的每个指定列都为空时,它才会删除该行。

val col_seq = Seq("col1", "col2").filter(df.columns.contains(_))
val df2 = if (col_seq.length > 0) df.na.drop("all", col_seq) else df

答案 1 :(得分:0)

删除该列表中所有列都为空的行”等价于:“保留该列表中至少一列不为空的行”。因此,您可以使用最后一个条件来过滤数据框:

val df1 = df.filter(colsList.map(col(_).isNotNull).reduce(_ or _))

答案 2 :(得分:0)

您可以使用 filter 删除每列的 null 值;

df.filter(r => !r.anyNull)