#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. Было бы здорово, если бы вы помогли мне понять, где именно я бы включил это изменение