Как приписать значения NULL к нулю в Spark/Scala

У меня есть Dataframe, в котором некоторые столбцы имеют тип String и содержат NULL в качестве значения String (не как фактический NULL). Я хочу вменять их с нуля. по-видимому df.na.fill(0) не работает Как я могу вменять их с нуля?

1 ответ

Ты можешь использовать replace() от DataFrameNaFunctions, они могут быть доступны по префиксу .na:

val df1 = df.na.replace("*", Map("NULL" -> "0"))

Вы также можете создать свой собственный udf что повторяет это поведение:

import org.apache.spark.sql.functions.col

val nullReplacer = udf((x: String) => {
  if (x == "NULL") "0"
  else x
})

val df1 = df.select(df.columns.map(c => nullReplacer(col(c)).alias(c)): _*)

Однако это было бы излишним, учитывая, что он делает то же самое, что и выше, за счет большего количества строк кода, чем необходимо.

Другие вопросы по тегам