Python如何遍历CSV文件列表并合并无表头数据
合并多个CSV文件(不含表头数据)的解决方案
嘿,你已经搞定了最麻烦的一步——收集所有CSV文件的路径!接下来咱们就把这些文件里的数据(跳过表头)合并成一个新的CSV,我给你两种方法,你可以选适合自己的:
方法一:用Python标准库csv(无需额外安装)
这种方法用Python自带的模块,不需要装第三方库,适合不想折腾环境的情况:
首先导入需要的库:
import os import csv
然后编写合并逻辑:
# 定义输出文件的路径,你可以改成自己想要的位置和文件名 output_file = "merged_gps_data.csv" # 标记是否已经写入过表头,避免重复写入 header_written = False # 打开输出文件准备写入 with open(output_file, 'w', newline='', encoding='utf-8') as out_csv: writer = csv.writer(out_csv) # 遍历每个CSV文件路径 for file_path in file_list: # 打开当前CSV文件 with open(file_path, 'r', encoding='utf-8') as in_csv: reader = csv.reader(in_csv) # 跳过当前文件的表头行,同时把表头存下来 current_header = next(reader) # 只有第一个文件需要写入表头到输出文件 if not header_written: writer.writerow(current_header) header_written = True # 把当前文件的所有数据行(跳过表头后的)写入输出文件 for row in reader: writer.writerow(row)
代码说明:
newline='':解决Windows系统下写入CSV时出现多余空行的问题encoding='utf-8':确保文件中的中文、特殊字符不会乱码,如果你的CSV是GBK编码,改成encoding='gbk'就行next(reader):专门用来跳过每个文件的第一行(表头),同时获取表头内容,只在第一个文件时写入输出文件,保证合并后的CSV只有一份表头
方法二:用pandas(更简洁高效)
如果你经常处理数据,推荐用pandas,代码更短,处理大文件也更顺手。先确保你已经安装了pandas:
pip install pandas
然后用几行代码就能搞定:
import pandas as pd # 读取所有CSV文件,自动跳过表头(header=0表示第一行是表头) all_data_frames = [pd.read_csv(file_path, header=0) for file_path in file_list] # 合并所有数据,重置行索引避免重复 merged_data = pd.concat(all_data_frames, ignore_index=True) # 保存合并后的文件,index=False表示不写入行序号 merged_data.to_csv("merged_gps_data.csv", index=False, encoding='utf-8')
代码说明:
pd.read_csv(file_path, header=0):自动识别每个CSV的第一行为表头,读取后续内容为数据pd.concat():把所有读取到的数据表合并成一个大表ignore_index=True:合并后重新生成行号,避免不同文件的行号重复to_csv(..., index=False):保存时不把行号写入CSV,保持文件整洁
注意事项:
- 请确保所有CSV文件的表头结构完全一致,比如列名、列数都相同,不然合并后会出现列错位或者缺失的情况
- 如果某个文件没有表头,或者表头格式不一样,你需要单独处理这个文件(比如手动指定表头)
内容的提问来源于stack exchange,提问作者kels




