Spark数据框选择该行的任何列中至少有一个null或空白的行

Posted

技术标签:

【中文标题】Spark数据框选择该行的任何列中至少有一个null或空白的行【英文标题】:Spark dataframe select rows with at least one null or blank in any column of that row 【发布时间】:2017-07-25 14:37:08 【问题描述】:

我想从一个数据帧创建一个新的数据帧,其中任何列中的至少一个值在 spark 1.5 / scala 中为空或空白。

我正在尝试编写一个泛化函数来创建这个新的数据框。我在其中传递数据框和列列表并创建记录。

谢谢

【问题讨论】:

您可以在 DataFrame 上使用 UDF + filter() 来完成。例如:***.com/a/40510441/1592191 你能更新样本输入和预期输出吗? 【参考方案1】:

样本数据

val df = Seq((null, Some(2)), (Some("a"), Some(4)), (Some(""), Some(5)), (Some("b"), null)).toDF("A", "B")

df.show
+----+----+
|   A|   B|
+----+----+
|null|   2|
|   a|   4|
|    |   5|
|   b|null|
+----+----+  

您可以将条件构造为,假设此处的空白表示空字符串:

import org.apache.spark.sql.functions.col
val cond = df.columns.map(x => col(x).isNull || col(x) === "").reduce(_ || _)

df.filter(cond).show
+----+----+
|   A|   B|
+----+----+
|null|   2|
|    |   5|
|   b|null|
+----+----+

【讨论】:

以上是关于Spark数据框选择该行的任何列中至少有一个null或空白的行的主要内容,如果未能解决你的问题,请参考以下文章

如何重新排序二进制矩阵,使列中至少有“1”值

当表达式显示时打印静态文本如果细节带中至少有一个非空字段

2009年哈萨克斯坦国际数学奥林匹克 第二天第六题

如果这些行中至少有一个具有给定值,则选择具有给定 ID 的所有行

如果 spark 数据框的特定列中的所有条目都为空,则删除

循环遍历 pandas 数据框列中的列表元素以在新列中返回列表