首页 > 解决方案 > Pyspark 在返回 0 的双精度数上转换整数

问题描述

在我的 PYspark 数据框中,我有一个类型为 double 的列。以下是它持有的数据:

|            HV ratio|
+--------------------+
|4.819714653321546E-6|
|6.290848613094555E-6|
|4.669412994783916E-6

我正在尝试将数字四舍五入到小数点后 2 位。以下是我正在运行的查询:

hv_ratio.select(format_number(hv_ratio["HV ratio"].cast('integer'),2).alias('HV ratio')).show()

但它改为返回零(如下所示):

|HV ratio|
+--------+
|    0.00|
|    0.00|
|    0.00|

任何建议都受到高度赞赏。

标签: apache-sparkpyspark

解决方案


的实数4.819714653321546E-60.000004819714653321546

当您转换为int值时,我们将0改为四舍五入到小数位,然后您将看到实际值。format_number20.00>5

Example:

df.withColumn("new_hvratio", format_number(col("HVratio"),21)).show(10,False)
#+--------------------+-----------------------+
#|HVratio             |new_hvratio            |
#+--------------------+-----------------------+
#|4.819714653321546E-6|0.000004819714653321546|
#+--------------------+-----------------------+

推荐阅读