这可能很奇怪,但我想知道如何使用将整个
.DataFrame
的Column
替换为null
>Scala
假设我有一个名为 col
的可以为 null 的 DoubleType
列。在那里,我想用 null
替换所有不同于 (1.0 ~ 10.0) 的数字。
我尝试了下一个代码,但效果不佳。
val xf = df.na.replace("col", Map(0.0 -> null.asInstanceOf[Double]).toMap)
但是,正如您在 Scala 中意识到的那样,当您将 null
转换为 Double
时,它会表示为 0.0
code>,这不是我想要的。此外,我无法意识到有任何方法可以使用一系列值来做到这一点。所以我就想有没有什么办法可以达到这个目的?
最佳答案
用 when
子句代替怎么样?
import org.apache.spark.sql.functions.when
val df = sc.parallelize(
(1L, 0.0) :: (2L, 3.6) :: (3L, 12.0) :: (4L, 5.0) :: Nil
).toDF("id", "val")
df.withColumn("val", when($"val".between(1.0, 10.0), $"val")).show
// +---+----+
// | id| val|
// +---+----+
// | 1|null|
// | 2| 3.6|
// | 3|null|
// | 4| 5.0|
// +---+----+
任何不满足谓词的值(此处为val BETWEEN 1.0 AND 10.0
)都将被替换为NULL
。
关于scala - 如何在 DataFrame 中用空值替换数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35587234/