Tengo un archivo csv que contiene valores numéricos como 1524.449677
. Siempre hay exactamente 6 decimales.
Cuando importo el archivo csv (y otras columnas) a través de pandas read_csv
, la columna obtiene automáticamente el object
tipo de datos. Mi problema es que los valores se muestran como 2470.6911370000003
que en realidad debería ser 2470.691137
. O el valor 2484.30691
se muestra como 2484.3069100000002
.
Esto parece ser un problema de tipo de datos de alguna manera. Traté de proporcionar explícitamente el tipo de datos al importar a través de read_csv
dando el argumento dtype
como {'columnname': np.float64}
. Aún así el problema no desapareció.
¿Cómo puedo obtener los valores importados y mostrarlos exactamente como están en el archivo csv de origen?
Pandas usa un convertidor dedicado de dec 2 bin
decs que compromete la precisión en lugar de la velocidad.
Pasar float_precision='round_trip'
a read_csv
corrige esto.
Echa un vistazo a esta página para más detalles sobre esto.
Después de procesar sus datos, si desea guardarlos nuevamente en un archivo csv , puede pasar
float_format = "%.nf"
al método correspondiente.
Un ejemplo completo:
import pandas as pd df_in = pd.read_csv(source_file, float_precision='round_trip') df_out = ... # some processing of df_in df_out.to_csv(target_file, float_format="%.3f") # for 3 decimal places