【发布时间】:2020-11-03 15:55:34
【问题描述】:
val someDF = Seq(
(8, "bat"),
(64, "mouse"),
(-27, "horse"),
(10, null),
(11, "")
).toDF("number", "word")
使用上面的数据框,我试图过滤掉 null 和空 word 列值。
Trail - 1
someDF.filter(col("word") =!= "" || col("word").isNotNull).show(false)
+------+-----+
|number|word |
+------+-----+
|8 |bat |
|64 |mouse|
|-27 |horse|
|11 | |
+------+-----+
我使用了 OR 条件,但它仍然没有删除空字符串 word 列值。
Trail - 2
someDF.filter(col("word") =!= "").filter(col("word").isNotNull).show(false)
+------+-----+
|number|word |
+------+-----+
|8 |bat |
|64 |mouse|
|-27 |horse|
+------+-----+
在 trail - 2 中,我使用了链式过滤器,然后它从数据框中删除了 null 值和空值。
Trail - 3
someDF.filter(col("word") =!= "" && col("word").isNotNull).show(false)
+------+-----+
|number|word |
+------+-----+
|8 |bat |
|64 |mouse|
|-27 |horse|
+------+-----+
在路径 -3 中,我使用了 AND 操作,然后它删除了 null/空值。
谁能向我解释为什么 OR 操作不起作用?我的代码有问题吗?
【问题讨论】:
-
你的代码没有任何问题,我认为你应该检查这个article解释更多细节
-
我试图过滤空值和空字符串列值。但它不起作用
-
我正在尝试这样 res35.filter(col("word") =!= "" || col("word").isNotNull).show(false)。但它'不过滤空字符串值
-
用解释检查所有试用版,看看有什么不同
标签: scala dataframe apache-spark apache-spark-sql