我尝试使用以下代码将AWS S3存储桶中的CSV文件作为panda Dataframe 读入内存:
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导入文件。谢谢!
5条答案
按热度按时间rwqw0loc1#
使用Pandas0.20.3
a8jjtwal2#
基于建议使用
smart_open
从S3阅读的this answer,下面是我在Pandas中使用它的方式:y3bcpkx13#
你不需要panda..你可以使用python的默认csv库
希望它解决了你的问题,祝你好运!:)
okxuctiv4#
我最终意识到,您还需要设置bucket中每个单独对象的权限,以便使用以下代码提取它:
我还必须修改www.example.com _csv命令中的存储桶地址pd.read,如下所示:
hrysbysz5#
您可以使用AWS SDK for Pandas,这是一个扩展Pandas的库,可以与AWS数据存储(如S3)顺畅地工作。