我正在尝试使用以下方法在 S3 上将数据帧写入为 CSV 文件s3fs https://github.com/dask/s3fs图书馆和熊猫。
尽管有文档,但我担心 gzip 压缩参数不适用于 s3fs。
def DfTos3Csv (df,file):
with fs.open(file,'wb') as f:
df.to_csv(f, compression='gzip', index=False)
此代码将数据帧保存为 S3 中的新对象,但以纯 CSV 格式而不是 gzip 格式保存。
另一方面,使用此压缩参数,读取功能可以正常工作。
def s3CsvToDf(file):
with fs.open(file) as f:
df = pd.read_csv(f, compression='gzip')
return df
写入问题的建议/替代方案?
先感谢您!。
函数的压缩参数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())
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)