我有一个数据框,如下所示:
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。