gpt4 book ai didi

python - 将 pandas 数据帧作为压缩的 CSV 直接写入 Amazon s3 存储桶?

转载 作者:太空狗 更新时间:2023-10-30 00:34:30 26 4
gpt4 key购买 nike

我目前有一个脚本可以读取保存到 s3 的 csv 的现有版本,将其与 pandas 数据框中的新行组合,然后将其直接写回到 s3。

    try:
csv_prev_content = str(s3_resource.Object('bucket-name', ticker_csv_file_name).get()['Body'].read(), 'utf8')
except:
csv_prev_content = ''

csv_output = csv_prev_content + curr_df.to_csv(path_or_buf=None, header=False)
s3_resource.Object('bucket-name', ticker_csv_file_name).put(Body=csv_output)

除了使用 gzip 压缩的 csv 之外,还有其他方法可以做到这一点吗?我想读取 s3 上现有的 .gz 压缩 csv(如果有的话),将其与数据帧的内容连接起来,然后直接在 s3 中用新的组合压缩 csv 覆盖 .gz 而不制作本地副本。

最佳答案

这是使用 Pandas 0.20.1 在 Python 3.5.2 中的解决方案。

可以从 S3、本地 CSV 或其他任何地方读取源 DataFrame。

import boto3
import gzip
import pandas as pd
from io import BytesIO, TextIOWrapper

df = pd.read_csv('s3://ramey/test.csv')
gz_buffer = BytesIO()

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

s3_resource = boto3.resource('s3')
s3_object = s3_resource.Object('ramey', 'new-file.csv.gz')
s3_object.put(Body=gz_buffer.getvalue())

关于python - 将 pandas 数据帧作为压缩的 CSV 直接写入 Amazon s3 存储桶?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43729224/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com