【发布时间】:2022-04-21 16:50:27
【问题描述】:
Pandas (v1.0.5) 使用 s3fs 库连接 AWS S3 并读取数据。默认情况下,s3fs 使用在default 配置文件中的~/.aws/credentials 文件中找到的凭据。在从 S3 读取 CSV 时,如何指定 pandas 应该使用哪个配置文件?
例如。
s3_path = 's3://mybucket/myfile.csv'
df = pd.read_csv(s3_path)
$ cat ~/.aws/credentials
[default]
aws_access_key_id = ABCD
aws_secret_access_key = XXXX
[profile2]
aws_access_key_id = PQRS
aws_secret_access_key = YYYY
[profile3]
aws_access_key_id = XYZW
aws_secret_access_key = ZZZZ
编辑:
当前的破解/工作解决方案:
import botocore
import s3fs
session = botocore.session.Session(profile='profile2')
s3 = s3fs.core.S3FileSystem(anon=False, session=session)
df = pd.read_csv( s3.open(path_to_s3_csv) )
上述解决方案的唯一问题是您需要导入 2 个不同的库并实例化 2 个对象。保持问题开放,看看是否有另一种更清洁/简单的方法。
【问题讨论】:
-
我相信你将不得不使用boto3下载csv文件,然后调用
pd.read_csv()。 -
是的,这是一种方式。我正在尝试查看是否可以 read_csv 而不在本地下载它。
标签: python pandas python-s3fs