将DataFrame追加至CSV模板时首行数据写入异常求助
问题解决:DataFrame追加到CSV时首行数据与表头合并
问题根源
你的原CSV模板文件(File1.csv)的表头行末尾没有换行符,导致用mode='a'追加数据时,第一行数据直接被拼接在表头行的末尾,出现了和表头并排、最后一个表头与数据合并的情况。
解决方案1:合并DataFrame后写入(推荐)
这种方法直接读取原CSV内容,和新DataFrame合并后整体写入,彻底规避文件格式问题:
import pandas as pd original_File = 'File1.csv' target_File = "File2.csv" # 读取原模板内容 original_df = pd.read_csv(original_File) # 构造要追加的新数据 FinalDF = pd.DataFrame({ "Item": ["Book", "Calculator"], "Value": [300, 1000] }) # 合并原数据与新数据,写入目标文件 pd.concat([original_df, FinalDF], ignore_index=True).to_csv(target_File, index=False)
解决方案2:修复文件换行后再追加
如果必须使用追加模式,先手动确保目标文件末尾有换行符,再写入数据:
import shutil, pandas as pd original_File = 'File1.csv' target_File = "File2.csv" shutil.copyfile(original_File, target_File) # 检查并添加文件末尾的换行符 with open(target_File, 'a', encoding='utf-8') as f: f.seek(0, 2) # 移动到文件末尾 if f.tell() > 0: f.seek(f.tell() - 1) last_char = f.read(1) if last_char != '\n': f.write('\n') # 构造新数据并追加 FinalDF = pd.DataFrame({ "Item": ["Book", "Calculator"], "Value": [300, 1000] }) FinalDF.to_csv(target_File, mode='a', index=False, header=False)
内容的提问来源于stack exchange,提问作者mrsprawin
相关产品推荐
相关产品推荐

