【问题标题】:Writing Pandas dataframe.groupby results to S3 bucket将 Pandas dataframe.groupby 结果写入 S3 存储桶
【发布时间】:2022-01-23 05:49:21
【问题描述】:

我有一个大数据框,我正试图将其分解为较小的部分并写入 S3 中的 csv 文件。出于测试目的,我将 groupby 大小设置得非常低,但概念是相同的。这是我的代码:

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'
        )

块工作正常,所有文件都按预期创建,但它们都是空的。不知道我错过了什么。我的理解是 g.to_csv(data) 应该将 csv 主体写入 BytesIO 对象,这就是我用来写入文件的内容。是不是我理解错了?

【问题讨论】:

  • 这有帮助吗? link

标签: python pandas amazon-s3 bytesio


【解决方案1】:

按照上面的 Patryks 建议后,我找到了一段有效的代码。在 boto3 中使用 Resource 而不是客户端,然后从 BytesIO 缓冲区写入 put 的主体,我能够获得填充有值的文件。工作代码是:

if not submittingdata.empty:
    for i, g in submittingdata.groupby(df.index // 200):
        data = BytesIO()
        g.to_csv(data)
        s3_resource.Object(
            'some-magic-bucket',
            f'file_prep_{i}.csv'
        ).put(
            Body=data.getvalue()
        )

【讨论】:

    猜你喜欢
    • 2020-07-29
    • 1970-01-01
    • 1970-01-01
    • 2019-12-06
    • 1970-01-01
    • 1970-01-01
    • 2022-01-24
    • 1970-01-01
    相关资源
    最近更新 更多