如何在DataFrame中用空值替换数字?

时间:2016-02-23 20:12:08

标签: scala apache-spark dataframe apache-spark-sql

可能很奇怪,但我想知道如何使用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,这不是我想要的。此外,我无法通过各种价值观实现这一目标。因此,我在想是否有办法实现这一目标?

1 个答案:

答案 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

另见Create new Dataframe with empty/null field values