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.

Escribiendo resultados de dataframe.groupby de Pandas a un cubo S3.

Tengo un dataframe grande que estoy tratando de dividir en fragmentos más pequeños y luego escribir en un archivo csv en S3. Para fines de prueba, he establecido el tamaño de agrupamiento muy bajo, pero el concepto es el mismo. Aquí está el código que tengo:

if not submittingdata.empty:
    for i, g in submittingdata.groupby(df.index // 200):
        data = BytesIO()
        g.to_csv(data)
        s3_client.upload_fileobj(
            data,
            Bucket='some-magic-bucket',
            Key=f'file_prep_{i}.csv'
        )

Los fragmentos están funcionando correctamente y todos los archivos se crean según lo previsto, pero están todos vacíos. No estoy seguro de qué me falta. Mi comprensión es que g.to_csv(data) debería escribir el contenido del csv en el objeto BytesIO, y luego eso es lo que estoy usando para escribir en el archivo. ¿Tal vez estoy entendiendo mal eso?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Parece que puede haber un problema con la forma en que se está escribiendo los datos en el objeto BytesIO. Aquí hay algunas soluciones potenciales:

    1. Intenta agregar data.seek(0) antes de subir el archivo a S3. Esto asegura que el puntero del archivo esté al principio del objeto BytesIO, permitiendo que S3 lea los datos desde el inicio.
    2. Verifica que el dataframe submittingdata contenga datos antes de ingresar al bucle for. Si el dataframe está vacío, entonces el método to_csv() no escribirá nada en el objeto BytesIO.
    3. Verifica si existen valores nulos o NaNs en el dataframe. Si es así, intenta eliminarlos antes de escribir los datos en el objeto BytesIO con el método dropna().
    4. Intenta especificar un delimitador al usar to_csv(). Por ejemplo, podrías usar g.to_csv(data, sep=',') para escribir el CSV con comas como separadores.

    Esperamos que una de estas soluciones resuelva el problema y permita que los datos se escriban correctamente en los archivos de S3.

Comments are closed.