Scala spark-如何有效地从所有选定列都包含空值的数据帧中删除行?
我有一些Scala spark-如何有效地从所有选定列都包含空值的数据帧中删除行?,scala,apache-spark,Scala,Apache Spark,我有一些dataframe,有许多列和列名列表。 如何从列表中删除all列中包含null的行?您可以使用df.na.drop并指定all和一系列列名。然后,仅当该行中的每个指定列都为null时,它才会删除该行 val col_seq = Seq("col1", "col2").filter(df.columns.contains(_)) val df2 = if (col_seq.length > 0) df.na.drop("all&qu
dataframe
,有许多列和列名列表。如何从列表中删除
all列中包含null
的行?您可以使用df.na.drop
并指定all
和一系列列名。然后,仅当该行中的每个指定列都为null时,它才会删除该行
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
“删除该列表中所有列均为空的行”相当于“保留该列表中至少有一列不为空的行”。因此,您可以使用最后一个条件来过滤数据帧:
val df1 = df.filter(colsList.map(col(_).isNotNull).reduce(_ or _))
您可以使用filter
删除每个列的null
值
df.filter(r=>!r.anyNull)
看起来不错。当中不存在这些列时,是否可以不删除dataframe@tomek.xyz您可以添加一个复选框,如编辑后的答案所示。对不起,我指的是列列表为空的情况。是否有任何优雅的方法可以做到这一点?@tomek.xyz请参见编辑后的答案