如何合并表头顺序随机的两个CSV文件
表头顺序随机的CSV文件合并实现方法
需求说明
合并两个表头字段可能重叠、排列顺序不一致的CSV文件,最终输出包含所有出现过的表头,缺失字段对应位置留空。
实现方案
方案1:Python标准库实现(无需额外安装依赖)
直接用Python内置的csv模块处理,逻辑如下:
- 读取两个CSV的表头,取并集作为最终输出的表头
- 逐行读取每个CSV的内容,按照最终表头的顺序填充值,不存在的字段填空字符串
代码示例:
import csv # 定义两个CSV文件路径,可根据实际情况修改 csv_paths = ["csv1.csv", "csv2.csv"] output_path = "final.csv" # 收集所有表头 all_headers = set() csv_contents = [] for path in csv_paths: with open(path, 'r', newline='', encoding='utf-8') as f: reader = csv.DictReader(f) # 把当前CSV的表头加入总集合 all_headers.update(reader.fieldnames) # 保存当前CSV的所有行数据 csv_contents.extend([row for row in reader]) # 可自定义表头顺序,示例保持和csv1表头顺序一致,也可替换为sorted(all_headers)按字母排序 final_headers = ['apple', 'orange', 'banana', 'pineapple'] # 写入最终CSV with open(output_path, 'w', newline='', encoding='utf-8') as f: writer = csv.DictWriter(f, fieldnames=final_headers, restval='') writer.writeheader() writer.writerows(csv_contents)
运行后生成的final.csv完全符合示例要求。
方案2:Pandas极简实现(适合已安装Pandas的场景)
Pandas的拼接操作默认自动对齐列,缺失值自动填充为空,代码非常短:
import pandas as pd df1 = pd.read_csv("csv1.csv") df2 = pd.read_csv("csv2.csv") # 合并两个DataFrame,自动对齐列 final_df = pd.concat([df1, df2], ignore_index=True) # 导出为CSV,空值留空 final_df.to_csv("final.csv", index=False)
方案3:命令行快速实现(适合Linux/Mac环境)
安装CSV处理工具csvkit后,一行命令即可完成:
csvstack csv1.csv csv2.csv > final.csv
csvstack会自动识别所有表头并对齐,缺失字段自动留空。
内容的提问来源于stack exchange,提问作者Nick
相关产品推荐
相关产品推荐

