Python DataFrame导出Excel覆盖前数据,仅留最后一行问题求助
问题分析
你遇到的核心问题是循环中每次调用to_excel()都会覆盖整个文件,所以最后只有最后一次循环生成的数据被保留。
解决方案
方案1:先收集所有数据,一次性导出(推荐)
直接把所有文件的结果先存入一个大字典,最后统一生成DataFrame并导出,避免重复写入覆盖:
Files = FileList() results = {} # 初始化空字典存储所有结果 for file in Files: # 把每个文件的词频结果存入大字典,键是文件名,值是词频统计 results[file] = KeySearch(file, b) # 一次性生成完整DataFrame并导出 data = pd.DataFrame.from_dict(results, orient='index') print(data) data.to_excel('GFG.xlsx')
方案2:循环中逐行追加(适合大数据场景)
如果数据量太大不想一次性存入内存,可以用ExcelWriter的追加模式,注意控制表头只写一次:
Files = FileList() is_first_write = True # 标记是否是第一次写入文件 for file in Files: result = {file: KeySearch(file, b)} data = pd.DataFrame.from_dict(result, orient='index') print(data) # 第一次写入用'w'模式创建文件,后续用'a'模式追加 with pd.ExcelWriter('GFG.xlsx', mode='a' if not is_first_write else 'w') as writer: # 只有第一次写入时保留表头 data.to_excel(writer, header=is_first_write) is_first_write = False
关于你之前尝试的问题
你提到存入列表追加出现重复,大概率是每次循环都把之前的所有数据重新写入了——比如错误地每次都把新数据和旧列表合并后全量写入,而不是只追加新数据。上面的两种方案都能避免这个问题,方案1更简洁高效,优先推荐。
内容的提问来源于stack exchange,提问作者madmarine2100
相关产品推荐
相关产品推荐

