我可以使用以下方式填充数字和字符串类型的列:
masterDF = masterDF.na.fill(-1)
masterDF = masterDF.na.fill("")
masterDF = masterDF.na.fill(-1.0)
但是我没有找到api来填充布尔类型列。
我尝试了此操作:masterDF = masterDF.na.fill(false)
,不受支持。
有什么想法吗?
答案 0 :(得分:5)
您可以在Map
内使用fill
,其中 key是列名,而 value 是Int
,{{1 }},Long
,Float
,Double
,String
。
Boolean
API文档说:
masterDF.na.fill(masterDF.columns.map(_ -> false).toMap)
您甚至可以使用/**
* (Scala-specific) Returns a new `DataFrame` that replaces null values.
*
* The key of the map is the column name, and the value of the map is the replacement value.
* The value must be of the following type: `Int`, `Long`, `Float`, `Double`, `String`, `Boolean`.
* Replacement values are cast to the column data type.
*
* For example, the following replaces null values in column "A" with string "unknown", and
* null values in column "B" with numeric value 1.0.
* {{{
* df.na.fill(Map(
* "A" -> "unknown",
* "B" -> 1.0
* ))
* }}}
*
* @since 1.3.1
*/
def fill(valueMap: Map[String, Any]): DataFrame = fillMap(valueMap.toSeq)
函数内的Map
为不同的列设置不同的值。
我希望答案会有所帮助。
答案 1 :(得分:2)
na.fill
布尔类型是在版本2.3.0
中添加的,并且以前的版本不支持填充布尔类型列。请参阅API规范here。