Как приписать значения 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)): _*)
Однако это было бы излишним, учитывая, что он делает то же самое, что и выше, за счет большего количества строк кода, чем необходимо.