web-dev-qa-db-ja.com

書き込みpandas DataFrame~S3)

APIをクエリする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')
 _

データフレーム全体をS3バケットにアップロードする方法をアップロードできますか?

6

データを保存するためにもBOTO3パッケージを使用できます。 S

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())
 _
2
wowkin2

これ

"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にバケットを作成する必要があります。

7
null