Las pandas leen un archivo csv con valores de coma flotante que produce un redondeo extraño y dígitos decimales

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