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

合并同表头CSV至DataFrame遇问题:读取文件后得到空列表

解决CSV文件合并时读取得到空列表的问题

问题原因

Path.glob()返回的是生成器对象,生成器仅能被遍历一次。你第一次用for f in files打印文件名时,已经耗尽了生成器内的所有元素;第二次再遍历files时,自然没有内容,因此得到空的DataFrame列表。

解决方案

提供两种可行的修改方式:

方式一:将生成器转为列表(支持多次遍历)

把glob返回的生成器转换成列表,保存所有文件路径,这样可以多次使用:

from pathlib import Path  
import pandas as pd

path = '//Users//Directory//'
# 转换生成器为列表,存储所有CSV文件路径
files = list(Path(path + "dirtest//").glob('*.csv'))

# 打印文件名
for f in files:
     print(f.name)

# 读取所有CSV到DataFrame列表
dfs = [pd.read_csv(f) for f in files]

# 合并为单个DataFrame
base_renov = pd.concat(dfs, ignore_index=True)

方式二:单次遍历完成打印与读取

在同一次遍历中完成文件名打印和文件读取,避免重复遍历生成器:

from pathlib import Path  
import pandas as pd

path = '//Users//Directory//'
files = Path(path + "dirtest//").glob('*.csv')

dfs = []
for f in files:
     print(f.name)
     # 读取文件并添加到列表
     dfs.append(pd.read_csv(f))

# 合并DataFrame
base_renov = pd.concat(dfs, ignore_index=True)

额外提示

  • 确保所有CSV文件的表头结构一致,否则pd.concat可能出现列对齐问题
  • 若CSV文件存在编码错误,可在pd.read_csv中指定编码参数,例如pd.read_csv(f, encoding='utf-8')或pd.read_csv(f, encoding='gbk')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 13:04:58