pandas 数据帧上的 s3fs gzip 压缩
s3fs gzip compression on pandas dataframe
我正在尝试使用 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)
此代码将数据框保存为 S3 中的新对象,但保存为普通 CSV,而不是 gzip 格式。
另一方面,读取功能使用此压缩参数工作正常。
def s3CsvToDf(file):
with fs.open(file) as f:
df = pd.read_csv(f, compression='gzip')
return df
Suggestions/alternatives写问题?
提前谢谢你!
函数 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())
pandas (v1.2.4) 可以直接将 csv 写入 S3,压缩功能正常工作。旧版 pandas 可能存在压缩问题。
例如
your_pandas_dataframe.to_csv('s3://your_bucket_name/your_s3_key.csv.gz',compression="gzip", index=False)
我正在尝试使用 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)
此代码将数据框保存为 S3 中的新对象,但保存为普通 CSV,而不是 gzip 格式。 另一方面,读取功能使用此压缩参数工作正常。
def s3CsvToDf(file):
with fs.open(file) as f:
df = pd.read_csv(f, compression='gzip')
return df
Suggestions/alternatives写问题? 提前谢谢你!
函数 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())
pandas (v1.2.4) 可以直接将 csv 写入 S3,压缩功能正常工作。旧版 pandas 可能存在压缩问题。 例如
your_pandas_dataframe.to_csv('s3://your_bucket_name/your_s3_key.csv.gz',compression="gzip", index=False)