将 Pandas 数据帧写入 S3 存储桶 (AWS)

Jon*_*nis 7 python amazon-s3 amazon-web-services pandas aws-lambda

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

import pandas as pd
import s3fs

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

我收到一个错误:

没有这样的文件或目录:'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')
Run Code Online (Sandbox Code Playgroud)

如何将整个数据帧上传到 S3 存储桶?

wow*_*in2 20

您也可以使用 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())
Run Code Online (Sandbox Code Playgroud)


nul*_*ull 18

这个

“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")
Run Code Online (Sandbox Code Playgroud)

注意:您需要先在 aws s3 上创建存储桶。

  • 小通知。为了使这项工作正常工作,应该安装 s3fs 包。 (4认同)