na.fill在Spark DataFrame Scala中

Vij*_*gde 1 scala dataframe apache-spark

我正在使用Spark/Scala,我想在我的DataFrame中使用基于列类型的默认值填充空值.

ie String Columns - >"string",Numeric Columns - > 111,Boolean Columns - > False等.

目前DF.na.functions API提供na.fill之
fill(valueMap: Map[String, Any])类的

df.na.fill(Map(
    "A" -> "unknown",
    "B" -> 1.0
))
Run Code Online (Sandbox Code Playgroud)

这需要知道列名称以及列的类型.

要么

fill(value: String, cols: Seq[String])
Run Code Online (Sandbox Code Playgroud)

这只是String/Double类型,甚至不是布尔值.

有一种聪明的方法吗?

Chr*_*ove 6

看看dtypes: Array[(String, String)].您可以使用此方法的输出生成Mapfor fill,例如:

val typeMap = df.dtypes.map(column => 
    column._2 match {
        case "IntegerType" => (column._1 -> 0)
        case "StringType" => (column._1 -> "")
        case "DoubleType" => (column._1 -> 0.0)
    }).toMap
Run Code Online (Sandbox Code Playgroud)