Замена значений в настраиваемом порядке spark scala

#scala #loops #apache-spark #spark-dataframe

#scala #циклы #apache-spark #spark-фрейм данных

Вопрос:

Я пытаюсь заменить нулевые значения в фрейме данных значениями, где в каждом столбце я хочу, чтобы na s были заполнены определенным значением по моему выбору для каждого столбца. Код, который я использую, выглядит следующим образом

 val data = sqlContext.createDataFrame(Seq(
  (10,null),
  (null,67),
  (14,null),
  (null,80)
)).toDF("V1","V2")

import org.apache.spark.sql.DataFrame
def valreplace(data:DataFrame,valueList:list,columnList:list):DataFrame = {
    for (i <- columnList){
        val val = valueList(columnList.indexOf(i))
        val replaced = data.na.fill(val,Seq(column))
        val data = replaced
        }   
    return(data)
}
valueList = List(9,57)
columnList = List("V1","V2")
val na_rep = valreplace(data,valueList,columnList)
  

Оно должно быть таким, чтобы na_rep равнялось

      ------ ---- 
    |    V1|  V2|
     ------ ---- 
    |    10|  57|
    |     9|  67|
    |    14|  57|
    |     9|  80|
     ------ ---- 
  

Однако я не могу запустить этот код. Любая помощь будет с благодарностью

Ответ №1:

Вы можете использовать getOrElse() .

Пример.

 YourValue.getOrElse("NewValue")
  

Комментарии:

1. Было бы здорово, если бы вы помогли мне понять, где именно я бы включил это изменение