可能很奇怪,但我想知道如何使用DataFrame
替换Column
null
Scala
DoubleType
的任意数量。
想象一下,我有一个名为col
的可为空的null
列。在那里,我想用val xf = df.na.replace("col", Map(0.0 -> null.asInstanceOf[Double]).toMap)
替换所有不同的数字(1.0~10.0)。
我尝试了下一个代码。
Scala
但是,正如您在将null
转换为Double
时在0.0
中意识到的那样,它会被表示为get_hot
,这不是我想要的。此外,我无法通过各种价值观实现这一目标。因此,我在想是否有办法实现这一目标?
答案 0 :(得分:2)
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
。