如何从aws s3导入多个文件

2024-04-27 00:22:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我有多个按顺序命名的文件:

prefix 1: 
    axc200101.csv
    axc200102.csv
    ...up until ax200112.csv

prefix 2:
   axc18840407-20191231-01.csv 
   axc18840407-20191231-02.csv
   .. axc18840407-20191231-65.csv

它们都在s3中。我想使用pandas并一次导入所有数据。有没有办法做到这一点

我当前的代码没有返回任何内容。此外,它只能处理一个前缀:

import boto3
import pandas as pd
import io

s3 = boto3.resource('s3')
bucket = s3.Bucket('databucket')
prefix_objs = bucket.objects.filter(Prefix="data/")

prefix_df = pd.DataFrame()

for obj in prefix_objs:
    key = obj.key
    body = obj.get()['Body'].read()
    temp = pd.read_csv(io.BytesIO(body), encoding='utf8')        
    prefix_df = prefix_df.append(temp)

谁能告诉我怎么解决这个问题吗


Tags: csvkeyioimportobjpandasdfprefix
1条回答
网友
1楼 · 发布于 2024-04-27 00:22:55

我要退房。它是为实现您所说的功能而构建的,可以并行地利用多个CPU或分布式集群

import dask.dataframe as ddf

dask_dataframe = ddf.read_csv('s3://aip-genome/data/*.csv')

# if you want to load the data into a pandas DataFrame, call compute()
df = dask_dataframe.compute()

相关问题 更多 >