Spark数据框na.fill布尔列类型

时间:2018-06-28 01:33:16

标签: apache-spark

我可以使用以下方式填充数字和字符串类型的列:

masterDF = masterDF.na.fill(-1)
masterDF = masterDF.na.fill("")
masterDF = masterDF.na.fill(-1.0)

但是我没有找到api来填充布尔类型列。 我尝试了此操作:masterDF = masterDF.na.fill(false),不受支持。

有什么想法吗?

2 个答案:

答案 0 :(得分:5)

您可以在Map内使用fill,其中 key是列名,而 value Int,{{1 }},LongFloatDoubleString

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