gpt4 book ai didi

java - Spark : replace null values in dataframe with mean of column

转载 作者:行者123 更新时间:2023-11-30 06:52:49 24 4
gpt4 key购买 nike

我如何创建一个 UDF 以编程方式用列平均值替换 spark 数据框中每一列中的空值。例如,在示例数据 col1 中,空值的值为 ((2+4+6+8+5)/5) = 5。

示例数据:

col1    col2    col3
2 null 3
4 3 3
6 5 null
8 null 2
null 6 4
5 2 8

所需数据:

col1    col2    col3
2 4 3
4 3 3
6 5 4
8 4 2
5 6 4
5 2 8

最佳答案

一般来说这里不需要UDF。所有你真的是聚合表:

val df = Seq(
(Some(2), None, Some(3)), (Some(4), Some(3), Some(3)),
(Some(6), Some(5), None), (Some(8), None, Some(2)),
(None, Some(6), Some(4)), (Some(5), Some(2), Some(8))
).toDF("col1", "col2", "col3").alias("df")

val means = df.agg(df.columns.map(c => (c -> "avg")).toMap)

并使用 coalesce 广播笛卡尔:

val exprs = df.columns.map(c => coalesce(col(c), col(s"avg($c)")).alias(c))

df.join(broadcast(means)).select(exprs: _*)

关于java - Spark : replace null values in dataframe with mean of column,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38356476/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com