You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pandas能否批量读取S3目录下的多个CSV文件?

Pandas读取S3目录下所有CSV的实现方式

Pandas本身没有提供直接读取S3目录下所有CSV文件的单一API,但可以通过结合文件系统工具来实现这个需求,以下是两种常用的方法:

方法1:使用s3fs配合glob模式

s3fs可以让Pandas像操作本地文件一样访问S3存储。先确保安装了s3fs:

pip install s3fs

然后通过glob匹配目录下所有CSV文件,再批量读取合并:

import pandas as pd
import s3fs

# 初始化S3文件系统
fs = s3fs.S3FileSystem()

# 获取目录下所有CSV文件路径
csv_files = fs.glob('s3://your-bucket/your-directory/*.csv')

# 逐个读取并合并DataFrame
df = pd.concat([pd.read_csv(f's3://{file}') for file in csv_files], ignore_index=True)

方法2:使用boto3遍历文件后读取

如果需要更精细的文件筛选(比如排除特定文件),可以用boto3列出目录下的文件:

import pandas as pd
import boto3

# 初始化S3客户端
s3 = boto3.client('s3')

# 列出指定桶和目录下的所有对象
response = s3.list_objects_v2(Bucket='your-bucket', Prefix='your-directory/')
csv_files = [obj['Key'] for obj in response['Contents'] if obj['Key'].endswith('.csv')]

# 读取并合并
df_list = []
for file_key in csv_files:
    obj = s3.get_object(Bucket='your-bucket', Key=file_key)
    df_list.append(pd.read_csv(obj['Body']))
df = pd.concat(df_list, ignore_index=True)

注意事项

  • 确保你的环境有访问该S3目录的权限(配置好AWS凭证,比如通过~/.aws/credentials或环境变量)
  • 如果目录下有非CSV文件,要添加过滤逻辑避免报错
  • 处理大文件时,建议分块读取或者使用dask.dataframe来减少内存压力

内容的提问来源于stack exchange,提问作者nirkov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 15:49:53