如何合并列头匹配的CSV文件并保留不匹配列?
合并多CSV文件:匹配列头并保留所有不匹配列
输入示例
file1.csv
col1,col2,col3,col5 a,b,c,d d,e,b,g c,a,d,h
file2.csv
col1,col3,col4,col5 g,d,b,c o,e,x,h b,n,w,e
期望输出
col1,col2,col3,col4,col5 a,b,c,,d d,e,b,,g c,a,d,,h g,,d,b,c o,,e,x,h b,,n,w,e
解决方案1:Python Pandas库
适合需要灵活扩展处理逻辑的场景:
- 安装依赖(未安装时执行):
pip install pandas
- 编写合并脚本:
import pandas as pd import glob # 获取目标路径下所有CSV文件,可根据实际路径修改 csv_paths = glob.glob("*.csv") # 批量读取CSV到DataFrame列表 df_list = [pd.read_csv(path) for path in csv_paths] # 合并所有DataFrame,自动对齐列名,缺失值填充为空字符串 merged_result = pd.concat(df_list, ignore_index=True).fillna("") # 导出为新CSV,不包含自动生成的索引列 merged_result.to_csv("merged_output.csv", index=False)
说明:
pd.concat会自动识别所有出现过的列名,对齐相同列,同时保留所有差异列fillna("")将缺失的单元格转为空字符串,完全匹配示例输出格式ignore_index=True重置合并后数据的行索引,避免原文件索引冲突
解决方案2:命令行工具csvkit
适合无代码快速批量处理:
- 安装csvkit:
pip install csvkit
- 执行合并命令:
csvstack --fill "" file1.csv file2.csv > merged_output.csv
说明:
--fill ""指定缺失值填充为空字符串- 可直接追加多个CSV文件名,或用通配符
*.csv批量处理目录下所有CSV文件
内容的提问来源于stack exchange,提问作者Kass
相关产品推荐
相关产品推荐

