首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >spark Dataframe中不带小数点的双精度值舍入

spark Dataframe中不带小数点的双精度值舍入
EN

Stack Overflow用户
提问于 2019-10-24 20:12:54
回答 2查看 5.1K关注 0票数 0

我尝试在spark dataframe中舍入一个不带小数点的双精度值,但在输出中获得了相同的值。

下面是dataframe列值。

代码语言:javascript
运行
复制
+-----+-----+
| SIG1| SIG2|
+-----+-----+
| 46.0| 46.0|
| 94.0| 46.0|

dataframe列的模式如下所示。

代码语言:javascript
运行
复制
scala> df.printSchema
root
 |-- SIG1: double (nullable = true)
 |-- SIG2: double (nullable = true)

预期输出如下

代码语言:javascript
运行
复制
+-----+-----+
| SIG1| SIG2|
+-----+-----+
| 46  |   46|
| 94  |   46|

我已尝试按照文档对列进行如下舍入

代码语言:javascript
运行
复制
+------------------------------------------------------------------+
|ReturnType| Signature     |                            Description|
+------------------------------------------------------------------+
|DOUBLE    |round(DOUBLE a)| Returns the rounded BIGINT value of a.|

使用的代码是

代码语言:javascript
运行
复制
val df1 = df.withColumn("SIG1", round(col("SIG1"))).withColumn("SIG2", round(col("SIG2")))

我们是否需要将列转换为int/bigint,或者是否可以使用round函数本身?

提前感谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-10-24 20:39:55

round函数也返回双精度值,所以如果你想要整型,那就强制转换它。

代码语言:javascript
运行
复制
scala> Seq(1.9999,2.1234,3.6523).toDF().select(round('value,2)).show()
+---------------+
|round(value, 2)|
+---------------+
|            2.0|
|           2.12|
|           3.65|
+---------------+


scala> Seq(1.9999,2.1234,3.6523).toDF().select(round('value,0)).show()
+---------------+
|round(value, 0)|
+---------------+
|            2.0|
|            2.0|
|            4.0|
+---------------+


scala> Seq(1.9999,2.1234,3.6523).toDF().select(round('value)).show()
+---------------+
|round(value, 0)|
+---------------+
|            2.0|
|            2.0|
|            4.0|
+---------------+

scala> Seq(1.9999,2.1234,3.6523).toDF().select('value.cast("int")).show()
+-----+
|value|
+-----+
|    1|
|    2|
|    3|
+-----+
票数 1
EN

Stack Overflow用户

发布于 2019-10-24 20:34:49

您不需要对列进行强制转换。如果你想去掉小数点后的数字,你可以使用round(colName, 0)

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58541146

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档