gpt4 book ai didi

python - 如何将内存值中的字典数据直接写入 s3 存储桶,如 csv 文件一样,而不写入文件然后上传

转载 作者:行者123 更新时间:2023-12-04 08:04:50 25 4
gpt4 key购买 nike

import boto3
import pandas as pd

BUCKET_NAME = ''
ACCESS_KEY_ID = ''
ACCESS_SECRET_KEY = ''
Fraudfilekey = 'fraud_CT_ID_IM_NO/ CT_PROFILE_One_to_Many_Mapping /yyyy=2021/mm=02/dd=05/2021_02_05_CT_TEST.csv'

d = {"A" : ["John","Deep","Julia","Kate","Sandy"],
"MonthSales" : [25,30,35,40,45]}
df = pd.DataFrame(d)

s3 = boto3.client('s3', region_name='ap-south-1', aws_access_key_id=ACCESS_KEY_ID,
aws_secret_access_key=ACCESS_SECRET_KEY)
def write_to_s3_oneim_to_onect(df):
s3.put_object(Body=df, Bucket=BUCKET_NAME, Key=Fraudfilekey)

write_to_s3_oneim_to_onect(df)
如何将字典值直接写入 s3 存储桶,出现以下错误消息
引发 ParamValidationError(report=report.generate_report())
botocore.exceptions.ParamValidationError:参数验证失败:
参数 Body 的类型无效,值:A MonthSales
注意:我希望标题栏为 IM 编号,csv 文件中的 CT ID

最佳答案

有几种方法。一种是使用 BytesIO作为文件的内存缓冲区:

import io

def write_to_s3_oneim_to_onect(df):
bytes_io = io.BytesIO()
df.to_csv(bytes_io)
s3.put_object(Body=bytes_io.getvalue(),
Bucket=BUCKET_NAME,
Key=Fraudfilekey)
其他将使用 s3fs哪些 Pandas 支持。这将需要您安装 s3fs 并设置 AWS credetnails供它使用。但是一旦设置,写入 S3 将是:
def write_to_s3_oneim_to_onect(df):
df.to_csv(f"s3://{BUCKET_NAME}/{Fraudfilekey}")

关于python - 如何将内存值中的字典数据直接写入 s3 存储桶,如 csv 文件一样,而不写入文件然后上传,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66272135/

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