PySpark 截断小数

Amb*_* Z. 7 apache-spark pyspark

我在 pySpark 工作,我有一个变量 LATITUDE,它有很多小数位。我需要从中创建两个新变量,一个是四舍五入的,一个是截断的。均为小数点后三位。

截断值的最简单方法是什么?

为了四舍五入,我做了:

raw_data = raw_data.withColumn("LATITUDE_ROUND", round(raw_data.LATITUDE, 3))
Run Code Online (Sandbox Code Playgroud)

这似乎有效,但如果有更好的方法,请告诉我。

小智 7

尝试:

>>> from pyspark.sql.functions import pow, lit
>>> from pyspark.sql.types import LongType
>>>
>>> num_places = 3
>>> m = pow(lit(10), num_places).cast(LongType())
>>> df = sc.parallelize([(0.6643, ), (0.6446, )]).toDF(["x"])
>>> df.withColumn("trunc", (col("x") * m).cast(LongType()) / m).
Run Code Online (Sandbox Code Playgroud)