pandas 将panda Dataframe 写入S3存储桶(AWS)

8fq7wneg  于 2023-01-15  发布在  其他
关注(0)|答案(3)|浏览(150)

我有一个查询API并创建 Dataframe 的AWS Lambda函数,我想将此文件写入S3存储桶,我正在使用:

import pandas as pd
import s3fs

df.to_csv('s3.console.aws.amazon.com/s3/buckets/info/test.csv', index=False)

我收到一个错误:
没有这样的文件或目录:'s3.console.aws.amazon.com/s3/buckets/info/test.csv'
但是那个目录存在,因为我正在从那里读文件,这里有什么问题?
我读过以前的档案,像这样:

s3_client = boto3.client('s3')
s3_client.download_file('info', 'secrets.json', '/tmp/secrets.json')

如何将整个 Dataframe 上载到S3存储桶?

gv8xihay

gv8xihay1#

您也可以使用boto3包将数据存储到S3

from io import StringIO  # python3 (or BytesIO for python2)
import boto3

bucket = 'info'  # already created on S3
csv_buffer = StringIO()
df.to_csv(csv_buffer)

s3_resource = boto3.resource('s3')
s3_resource.Object(bucket, 'df.csv').put(Body=csv_buffer.getvalue())
k97glaaz

k97glaaz2#

这个
"示例网站"s3.console.aws.amazon.com/s3/buckets/info/test.csv"
不是S3的URI,需要传递一个S3的URI保存到s3,而且不需要导入s3fs(只需要安装即可),
试试看:

import pandas as pd

df = pd.DataFrame()
# df.to_csv("s3://<bucket_name>/<obj_key>")

# In your case
df.to_csv("s3://info/test.csv")

注意:你需要先在aws s3上创建bucket。

arknldoa

arknldoa3#

您可以使用AWS SDK for Pandas,这是一个扩展Pandas的库,可以与AWS数据存储顺畅地工作。

import awswrangler as wr
df = wr.s3.read_csv("s3://bucket/file.csv")

该库在AWS Lambda中提供,并添加了名为AWSSDKPandas-Python的层。

相关问题