我正在尝试使用我从上一个问题Read multiple csv files from S3 bucket with boto3 中找到的函数,但我不断收到 ValueError: DataFrame 构造函数未正确调用!
这是下面的代码:
s3 = boto3.resource('s3',aws_access_key_id=ACCESS_KEY, aws_secret_access_key=SECRET_KEY)
bucket = s3.Bucket('test_bucket')
prefix_objs = bucket.objects.filter(Prefix=prefix)
prefix_df = []
for obj in prefix_objs:
key = obj.key
body = obj.get()['Body'].read()
df = pd.DataFrame(body)
当我打印 body 时,我得到的只是一串以 ab' 开头的字符串
我使用它,如果您的所有文件都在 1 个前缀路径中,它就可以很好地工作。基本上,您创建 s3 客户端,然后遍历前缀路径中的每个对象,然后将每个文件附加到一个空列表中,以便通过 Pandas 进行连接。
import boto3
import pandas as pd
s3 = boto3.client("s3",\
region_name=region_name,\
aws_access_key_id=aws_access_key_id,\
aws_secret_access_key=aws_secret_access_key)
response = s3.list_objects(Bucket="my-bucket",\
Prefix="datasets/")
df_list = []
for file in response["Contents"]:
obj = s3.get_object(Bucket="my-bucket", Key=file["Key"])
obj_df = pd.read_csv(obj["Body"])
df_list.append(obj_df)
df = pd.concat(df_list)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句