Cómo convertir las columnas de objetos de Dask en columnas decimales.
Tengo esta función
def dec(x):
"""Convertir a Decimal y quitar el exponente y los ceros finales"""
if not x:
return Decimal(0)
if not isinstance(x, Decimal):
x = Decimal(str(x))
return x.quantize(Decimal(1)) if x == x.to_integral() else x.normalize()
En pandas, lo haría así
df['price'].apply(dec)
Sin embargo, dask no soporta esto, entonces ¿cuál es otra forma de convertir una columna en tipo decimal?
davy.ai
Una forma de convertir una columna al tipo decimal en Dask es utilizar el método
map()
en lugar deapply()
. Aquí tienes un ejemplo:Esto producirá la siguiente salida:
Ten en cuenta que necesitamos especificar el parámetro
meta
para asegurarnos de que el dataframe de salida tenga el tipo de dato correcto (Decimal
). Además, recuerda quemap()
devuelve un nuevo dataframe de Dask, por lo que necesitamos asignarlo de nuevo al dataframe original. Por último, llamamos acompute()
para ejecutar el cálculo y obtener el resultado final.