【发布时间】:2017-07-10 22:10:33
【问题描述】:
我有一个这样的数据集
id category value
1 A NaN
2 B NaN
3 A 10.5
5 A 2.0
6 B 1.0
我想用它们各自类别的平均值填充 NAN 值。如下图
id category value
1 A 4.16
2 B 0.5
3 A 10.5
5 A 2.0
6 B 1.0
我尝试使用 group by 计算每个类别的第一个平均值
val df2 = dataFrame.groupBy(category).agg(mean(value)).rdd.map{
case r:Row => (r.getAs[String](category),r.get(1))
}.collect().toMap
println(df2)
我得到了每个类别的地图及其各自的平均值。output: Map(A ->4.16,B->0.5)
现在我尝试在 Sparksql 中更新查询来填充列,但似乎 spqrkSql dosnt 支持更新查询。我试图在数据框中填充空值,但没有这样做。
我能做些什么?我们可以在 pandas 中做同样的事情,如Pandas: How to fill null values with mean of a groupby? 所示
但是我该如何使用 spark 数据框
【问题讨论】:
标签: database scala apache-spark apache-spark-sql