Saltar al contenido

PySpark truncar un decimal

Solución:

Tratar:

>>> 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).

Spark 1.5.2

Simplemente puede usar el format_number(col,d) función, que redondea la entrada numérica a d lugares decimales y lo devuelve como un string. En tu caso:

raw_data = raw_data.withColumn("LATITUDE_ROUND", format_number(raw_data.LATITUDE, 3))

Podrías usar el floor() función. Entonces (sin probar) sugeriría:

raw_data = raw_data.withColumn("LATITUDE_TRUNCATED", floor(raw_data.LATITUDE))

Pero tenga cuidado con los valores negativos, como en https://math.stackexchange.com/questions/344815/how-do-the-floor-and-ceiling-functions-work-on-negative-numbers

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *