У меня есть следующий фрейм данных:
val df = Seq(("x", "y", 1),("x", "z", 2),("x", "a", 4), ("x", "a", 5), ("t", "y", 1), ("t", "y2", 6), ("t", "y3", 3), ("t", "y4", 5)).toDF("F1", "F2", "F3")
+---+---+---+
| F1| F2| F3|
+---+---+---+
| x| y| 1|
| x| z| 2|
| x| a| 4|
| x| a| 5|
| t| y| 1|
| t| y2| 6|
| t| y3| 3|
| t| y4| 5|
+---+---+---+
Я выполняю фильтрацию и выбор значений следующим образом:
df.filter($"F1" === "x" && $"F2"==="y").head.getInt(2)
Вышеописанное работает.Но получим исключение из следующего:
df.filter($"F1" === "x" && $"F2"==="y").head.getDouble(2)
Кроме того, следующие разрывы, когда в отфильтрованном фрейме данных нет записей:
df.filter($"F1" === "x" && $"F2"==="y1").head.getAs[Int]("F3")
Итак, как безопасно выполнить getAs[]()
и получить значение?Если значение является целым или двойным, я хочу, чтобы оно всегда было двойным, а если отфильтрованный фрейм данных пуст, то должен быть возвращен 0.0.