Pandas数据帧的s3fs-gzip压缩

2024-10-04 09:23:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图使用s3fs库和pandas在S3上编写一个CSV文件作为一个数据帧。 尽管有文档,恐怕gzip压缩参数不能用于s3fs。在

def DfTos3Csv (df,file):
    with fs.open(file,'wb') as f:
       df.to_csv(f, compression='gzip', index=False)

这段代码将dataframe作为一个新对象保存在S3中,但以普通CSV格式保存,而不是gzip格式。 另一方面,使用这个压缩参数,读取功能正常。在

^{pr2}$

写作问题的建议/备选方案? 提前谢谢你!。在


Tags: 文件csv数据文档pandasdf参数s3
1条回答
网友
1楼 · 发布于 2024-10-04 09:23:50

函数to_csv()的压缩参数在写入流时不起作用。你必须分别进行压缩和上传。在

import gzip
import boto3
from io import BytesIO, TextIOWrapper

buffer = BytesIO()

with gzip.GzipFile(mode='w', fileobj=buffer) as zipped_file:
    df.to_csv(TextIOWrapper(zipped_file, 'utf8'), index=False)

s3_resource = boto3.resource('s3')
s3_object = s3_resource.Object('bucket_name', 'key')
s3_object.put(Body=buffer.getvalue())

相关问题 更多 >