es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

La función .to_csv de Pandas dataframe está cambiando el tipo de dato.

Estoy tomando un dataframe de pandas, convirtiéndolo en un archivo CSV, subiéndolo a S3 y luego copiando ese archivo de S3 a una tabla de Redshift.

Al realizar la ingestión en Redshift, recibo un error que indica que una columna de tipo entero con un valor de 0, se está leyendo como 0.0. He convertido el tipo de dato a entero a nivel del dataframe antes de leerlo en un archivo CSV, así que creo que el error debe ser cuando se convierte en un archivo CSV. Sin embargo, al abrir el archivo real, ese campo que arroja el error sigue siendo 0. ¿Alguna idea de cómo puedo preservar ese valor para que la ingestión se realice sin problemas?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Una posible solución podría ser definir explícitamente el tipo de dato de la columna en la tabla de Redshift como ENTERO y asegurarse de que coincida con el tipo de dato en el dataframe de pandas. Otra opción podría ser usar el parámetro dtype al convertir el dataframe a CSV para asegurarse de que la columna de enteros se escriba como un entero, por ejemplo:

    df.to_csv('data.csv', index=False, dtype={'integer_column':int})
    

    Esto debería asegurar que la columna de enteros se escriba como un entero en el archivo CSV y, por lo tanto, se lea como tal durante la ingestión de Redshift.

Comments are closed.