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类型,甚至不是布尔值.
有一种聪明的方法吗?
看看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)