尝试使用以下UDF在数据框中将null替换为0。 我可能会出错的地方,代码看起来很简单,但是却没有按预期工作。
我试图创建一个UDF来替换任何值为空的列中的0。
谢谢大家。
* +------+----+--------------+
* | name| age|ageNullReplace|
* +------+----+--------------+
* |miguel|null| 0|
* | luisa| 21| 21|
* +------+----+--------------+
预期输出:
{{1}}
答案 0 :(得分:2)
不需要UDF。您可以将na.fill
应用于DataFrame中特定类型的列的列表,如下所示:
import org.apache.spark.sql.functions._
import spark.implicits._
val df = Seq(
("miguel", None), ("luisa", Some(21))
).toDF("name", "age")
df.na.fill(0, Seq("age")).show
// +------+---+
// | name|age|
// +------+---+
// |miguel| 0|
// | luisa| 21|
// +------+---+
答案 1 :(得分:1)
您可以将WithColumn与when条件一起使用,如下所示 代码未经测试
df.withColumn("ageNullReplace", when(col("age").isNull,lit(0)).otherwise(col(age)))
以上代码中的
否则,仅需供参考即可
希望有帮助