如何批量合并1000+***_correlations.csv格式的CSV文件并保留文件名变量
批量合并同规则CSV并提取文件名变量的实现方案
适用场景:千级量级的统一结构CSV合并,自动匹配
*_correlations.csv命名规则,从文件名提取城市名作为新增city列,最终输出为符合要求的combined.csv
方案1:Python 处理(适配千级文件、稳定性最高)
这个是处理大规模文件最不容易出错的方式,不会因为单文件异常中断整体流程,千级文件处理耗时基本在10秒以内。
- 前置准备:安装pandas依赖,执行命令
pip install pandas即可 - 操作步骤:把以下代码保存为
merge_csv.py,和所有待合并的CSV文件放在同一文件夹下运行
import pandas as pd import glob import os # 匹配所有符合命名规则的待处理文件 target_files = glob.glob("*_correlations.csv") chunk_list = [] for file_path in target_files: # 从文件名提取城市名,去掉路径和固定后缀 base_name = os.path.basename(file_path) city = base_name.replace("_correlations.csv", "") # 读取单文件,适配示例中的空格分隔格式 df = pd.read_csv(file_path, sep=r"\s+") # 写入新增的city列 df["city"] = city chunk_list.append(df) # 纵向合并所有分片数据 combined = pd.concat(chunk_list, ignore_index=True) # 调整列顺序,和示例结构保持一致 combined = combined[["ID", "city", "A", "B", "C"]] # 输出最终结果文件 combined.to_csv("combined.csv", index=False)
- 适配调整:如果你的CSV是常规逗号分隔格式,把
pd.read_csv里的sep=r"\s+"参数删掉即可
方案2:Windows 批处理快速实现(无需Python环境)
适合临时操作、不想配置Python环境的Windows用户
- 操作步骤:把所有待合并CSV放在同一个空文件夹,新建一个文本文档,输入以下内容后另存为
merge.bat(编码选择ANSI),双击运行即可
@echo off setlocal enabledelayedexpansion :: 写入合并文件的表头 echo ID city A B C > combined.csv :: 遍历所有符合规则的文件 for %%f in (*_correlations.csv) do ( :: 从文件名提取城市名,去掉固定后缀 set "file_stem=%%~nf" set "city=!file_stem:_correlations=!" :: 跳过每个文件的原有表头,逐行添加城市名后追加到合并文件 for /f "skip=1 tokens=1-4 delims= " %%a in ("%%f") do ( echo %%a !city! %%b %%c %%d >> combined.csv ) )
- 注意:这个方案仅适合小体量文件,千级以上的大文件处理速度远慢于Python方案,且对不规则分隔符的兼容性较差
内容的提问来源于stack exchange,提问作者anba
相关产品推荐
相关产品推荐

