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

读取目录CSV文件合并为DataFrame时遇FileNotFoundError求助

问题解决:读取data目录下CSV文件时的FileNotFoundError

核心原因

os.listdir('data/')返回的是仅文件名,不带所在目录路径。当你用pd.read_csv(filename)时,Python会在当前工作目录而非data/目录下查找文件,自然找不到目标文件。

修复方案

方案1:拼接完整文件路径(基础版)

使用os.path.join()将data/目录和文件名拼接成完整路径,确保读取路径正确:

import os
import pandas as pd

# 初始化空列表存储每个CSV的DataFrame(大量文件时更高效)
df_list = []
data_dir = 'data/'

for filename in os.listdir(data_dir):
    # 只处理CSV文件,避免读取非CSV文件报错
    if filename.endswith('.csv'):
        # 拼接完整文件路径
        full_path = os.path.join(data_dir, filename)
        df = pd.read_csv(full_path)
        df_list.append(df)

# 一次性合并所有DataFrame,重置索引避免混乱
resultdf = pd.concat(df_list, ignore_index=True)

print(resultdf.head())

方案2:用pathlib实现更简洁的路径处理(Python 3.4+)

pathlib是现代路径处理库,代码更直观简洁:

from pathlib import Path
import pandas as pd

df_list = []
data_dir = Path('data/')

# 直接遍历目录下所有CSV文件,无需手动拼接路径
for csv_file in data_dir.glob('*.csv'):
    df = pd.read_csv(csv_file)
    df_list.append(df)

resultdf = pd.concat(df_list, ignore_index=True)

额外优化说明

  • 避免循环中反复合并:原代码每次循环都执行concat,大量文件时效率极低。先将所有DataFrame存入列表,最后一次性合并,能大幅提升性能。
  • 过滤非CSV文件:通过后缀判断或glob匹配,避免误读目录下的其他文件导致报错。
  • 重置索引:合并时添加ignore_index=True,避免原文件索引重复或混乱。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 17:02:40