gpt4 book ai didi

java - 将 Spark DF 过滤到仅具有 2 位小数的列,而不使用舍入/下限

转载 作者:行者123 更新时间:2023-12-02 10:05:12 25 4
gpt4 key购买 nike

我有如下的spark df

+-----------+-------+-----+----+----+-------+----+----+-----+
|_c1 |_c2 |_c3 |_c4 |_c5 |_c6 |_c7 |_c8 |_c9 |
+-----------+-------+-----+----+----+-------+----+----+-----+
|10000000001|7982015|0.00 |0 |0.00|12.9912|0.00|1 |0.00 |
+-----------+-------+-----+----+----+-------+----+----+-----+

我正在尝试将 _c6 列值修剪为小数点后 2 位并使其准确,但我无法使用 round/floor,因为它们给出了封闭值。

有没有办法选择前两位小数得到 12.99 而不是四舍五入?

最佳答案

一个有趣的方法是使用 regexp_extract 以便只保留小数点后最多 2 位数字:

Seq(8989.09888, 22.1, 88, 345.111)
.toDF("x")
.select(regexp_extract('x, "[0-9]+(\\.[0-9]{1,2})?", 0) cast "double" as "x")
.show
+-------+
| x|
+-------+
|8989.09|
| 22.1|
| 88.0|
| 345.11|
+-------+

请注意,我们处理所有不同的情况(没有小数,只有一个......)。

关于java - 将 Spark DF 过滤到仅具有 2 位小数的列,而不使用舍入/下限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55385181/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com