python - 如何将 csv 文件作为单独的数据帧从 python 中的 S3 存储桶加载?
问题描述
s3 = boto3.client('s3')
def get_s3_keys(bucket, prefix):
"""Get a list of keys in an S3 bucket."""
resp = s3.list_objects_v2(Bucket=bucket, Prefix=prefix)
for obj in resp['Contents']:
files = obj['Key']
print(files)
return files
filename = get_s3_keys('bucket', 'folder')
print(filename)
我使用上面的函数来获取密钥,我看到了 3 个 csv 文件。我希望将它们导入单独的数据框。
解决方案
我的 S3: 上有三个文件airtravel.csv, cities.csv, tally_cab.csv
,取自这里。
我用这个:
import boto3
import pandas as pd
my_bucket = "eine-spinne"
s3 = boto3.client("s3")
resp = s3.list_objects_v2(Bucket=my_bucket)
dfs = {}
for file in resp['Contents']:
key = file['Key']
if key.endswith(".csv"):
object_data = s3.get_object(Bucket=my_bucket, Key=key)
dfs[key] = pd.read_csv(object_data['Body'])
print(type(dfs['airtravel.csv']), "\n", dfs['airtravel.csv'].iloc[0])
这将创建dict
三个数据帧中的一个,其中 S3 文件是键。
样本输出:
<class 'pandas.core.frame.DataFrame'>
Month JAN
"1958" 340
"1959" 360
"1960" 417
Name: 0, dtype: object
推荐阅读
- php - MongoDB 和 PHP 错误提示:未定义索引:变量
- python - 如何(单独)压缩目录中的所有文件夹和子文件夹?
- dataframe - 编写 UDF 以在 Java 中查找 Map 给出不支持的文字类型类 java.util.HashMap
- node.js - 编译的 express.js 文件的运行顺序?
- angular - 跳过身份服务器 4 登录页面并将 IDP 和资源服务器放在同一域上
- php - 如何使用 phpunit 在 laravel 中不调用 App::make
- javascript - JS 获取请求中的同步问题
- .net-core - 使用 SmtpClient (.Net Core) 发送电子邮件时出现错误 504
- python - python中具有固定均值的高斯混合模型估计函数?
- macos - cronjob 没有在 macos 上执行