如何使用Python的Pandas向CSV文件追加列标题与列值
解决CSV添加新列时额外生成表头行的问题
你的问题出在使用names=fields参数读取已有表头的CSV文件,这会让pandas把原文件的表头行当成普通数据行,同时将fields作为新表头写入,最终导致多出一行表头。
修正步骤:
- 读取CSV时不指定
names参数,让pandas自动识别原文件的表头; - 添加
TIMESTAMP列并赋值; - 保存时设置
index=False,避免写入冗余的索引列。
修正后的代码:
import os import pandas as pd from datetime import datetime path = "//wherever" dir_list = os.listdir(path) for filename in dir_list: file_path = os.path.join(path, filename) # 用os.path.join适配不同系统路径,更安全 # 从文件名提取时间 time_raw = filename.split("_") time_compressed = time_raw[1] timestamp = datetime.strptime(time_compressed, "%Y%m%dT%H%MZ") # 读取原CSV,自动识别表头 df = pd.read_csv(file_path, encoding="cp1252", low_memory=True) # 添加新列 df['TIMESTAMP'] = timestamp # 保存时不写索引,保留正确表头 df.to_csv(file_path, index=False)
关键修改说明:
- 移除
names=fields:原CSV已有Field1/Field2/Field3表头,无需手动指定,否则会覆盖原表头并产生重复行; - 使用
os.path.join拼接路径:避免手动拼接路径时出现的系统兼容性问题; - 添加
index=False:防止pandas把默认的数字索引写入CSV文件,保持数据整洁。
内容的提问来源于stack exchange,提问作者Monty
相关产品推荐
相关产品推荐

