我正在尝试使用以下代码将位于 AWS S3 存储桶中的 CSV 文件作为 pandas 数据帧读取到内存中:
import pandas as pd
import boto
data = pd.read_csv('s3:/example_bucket.s3-website-ap-southeast-2.amazonaws.com/data_1.csv')
为了提供完整的访问权限,我在 S3 存储桶上设置了存储桶策略,如下所示:
{
"Version": "2012-10-17",
"Id": "statement1",
"Statement": [
{
"Sid": "statement1",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:*",
"Resource": "arn:aws:s3:::example_bucket"
}
]
不幸的是,我仍然在 python 中遇到以下错误:
boto.exception.S3ResponseError: S3ResponseError: 405 Method Not Allowed
想知道是否有人可以帮助解释如何在 AWS S3 中正确设置权限或正确配置 pandas 以导入文件。谢谢!
最佳答案
使用 Pandas 0.20.3
import boto3
import pandas as pd
import sys
if sys.version_info[0] < 3:
from StringIO import StringIO # Python 2.x
else:
from io import StringIO # Python 3.x
client = boto3.client('s3')
bucket_name = 'my_bucket'
object_key = 'my_file.csv'
csv_obj = client.get_object(Bucket=bucket_name, Key=object_key)
body = csv_obj['Body']
csv_string = body.read().decode('utf-8')
df = pd.read_csv(StringIO(csv_string))
关于python - 如何在 Python 中使用 Pandas 从 s3 存储桶中读取 csv 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30818341/