我正在使用Spark / Scala,我希望使用基于列类型的默认值填充我的DataFrame中的空值。
即字符串列 - > “string”,Numeric Columns - > 111,布尔列 - >假等。
目前DF.na.functions API提供了na.fill
fill(valueMap: Map[String, Any])
喜欢
df.na.fill(Map(
"A" -> "unknown",
"B" -> 1.0
))
这需要知道列名称以及列的类型。
OR
fill(value: String, cols: Seq[String])
这只是String / Double类型,甚至不是布尔值。
有没有聪明的方法来做到这一点?
答案 0 :(得分:6)
Take a look at dtypes: Array[(String, String)]
. You can use the output of this method to generate a Map
for fill
, e.g.:
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