求合并不同表头CSV为全表头格式的Unix/Python代码
CSV 合并解决方案
Unix 命令行实现
使用awk可以灵活处理这种需要组合行的场景,直接用一行命令就能完成:
awk -F ',' -v OFS=',' 'NR==1{getline h <"b.csv";print $0","h;next}FNR>1{getline l <"b.csv";print $0","l;print $0}' a.csv > file.csv
逻辑说明
- 读取
a.csv的第一行(表头),同时读取b.csv的表头,拼接后作为新文件的表头输出 - 对
a.csv的每一行数据:- 读取
b.csv的数据行,和当前a行拼接后输出 - 再单独输出当前
a行
- 读取
Python 实现
用Python标准库csv处理,无需额外安装依赖,代码可读性更强:
import csv # 读取两个文件的表头和数据 with open('a.csv', 'r', newline='') as f: a_reader = csv.reader(f) a_header = next(a_reader) a_data = list(a_reader) with open('b.csv', 'r', newline='') as f: b_reader = csv.reader(f) b_header = next(b_reader) b_data = list(b_reader) # 生成合并后的内容 combined_header = a_header + b_header combined_data = [] for a_row in a_data: # 先添加a行与b行的组合 for b_row in b_data: combined_data.append(a_row + b_row) # 再添加单独的a行 combined_data.append(a_row) # 写入结果文件 with open('file.csv', 'w', newline='') as f: writer = csv.writer(f) writer.writerow(combined_header) writer.writerows(combined_data)
运行这个脚本后,file.csv就会包含你需要的表头和两行数据。
内容的提问来源于stack exchange,提问作者TAN08
相关产品推荐
相关产品推荐

