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

Python如何分批次读取glob匹配的CSV文件 按10个一组合并为DataFrame

无固定命名规则CSV文件按固定批次合并方案

不需要依赖文件名匹配规则,直接对glob返回的文件列表按索引切片拆分,即可实现每N个文件为一批的合并逻辑,适配任意命名格式的CSV文件。

核心逻辑

  • 完全基于glob返回的文件列表顺序做拆分,不解析、不筛选文件名,无规律命名的文件也能正常处理
  • 按设定的批次大小对列表做连续切片,前10个为第一组、11-20为第二组,末尾不足10个的文件自动归为最后一组
  • 每组文件读取后单独合并为独立DataFrame,存入结果列表按顺序取用即可

完整实现代码

import glob
import os
import pandas as pd  

path = r'D:\Course\Research\Data\2017-21'  
print(path)
all_files = glob.glob(os.path.join(path, "*.csv"))

# 配置单批次文件数量
batch_size = 10
# 按顺序存储所有批次的合并结果
batch_result_list = []

for idx in range(0, len(all_files), batch_size):
    # 切片获取当前批次对应的文件
    current_batch = all_files[idx : idx + batch_size]
    # 读取当前批次所有CSV文件
    df_generator = (pd.read_csv(f, encoding='utf8', error_bad_lines=False) for f in current_batch)
    # 合并当前批次为单个DataFrame,重置索引避免索引重复
    merged_batch_df = pd.concat(df_generator, ignore_index=True)
    batch_result_list.append(merged_batch_df)
    # 可选:打印处理进度
    print(f"批次{len(batch_result_list)}处理完成,包含{len(current_batch)}个文件")

# 取用示例:
# 第1批合并结果:batch_result_list[0]
# 第2批合并结果:batch_result_list[1]
# 第n批合并结果:batch_result_list[n-1]

提示:如果使用pandas 1.3.0及以上版本,可将参数error_bad_lines=False替换为on_bad_lines='skip',适配新版本参数规范。

调整说明

  • 如需修改单批次包含的文件数,直接修改batch_size变量的赋值即可,例如设置为20即每20个文件合并为一个DataFrame
  • 拆分顺序和glob返回文件的顺序完全一致,如果需要自定义排序规则,可以在拆分前对all_files列表做自定义排序后再执行分批逻辑
  • 所有CSV列名一致的前提下,合并过程不会出现字段错位问题,和全量合并的字段适配逻辑完全一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 01:24:24