You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中合并多个数据处理函数并将多份DataFrame导出到同一份xlsx文件

问题原因

你每次调用df.to_excel('excelfile.xlsx')时,Pandas默认都会创建一个全新的Excel文件,直接覆盖同路径下的同名文件,所以前两次函数运行写入的内容都会被最后一次的写入操作覆盖,只会保留最后一份结果。

解决方案(改动极小,适合新手)

你只需要用pd.ExcelWriter创建统一的写入管理器,所有DataFrame都通过同一个管理器写入即可,全程只会打开一次Excel文件,不会重复创建覆盖:

import pandas as pd

# 创建统一的Excel写入管理器,with语法会自动处理保存、关闭文件逻辑
with pd.ExcelWriter('excelfile.xlsx') as writer:
    def file1(file_name_one):
        importing = pd.read_csv(file_name_one)
        df1 = pd.DataFrame(data={'Net Sales':[importing['Net Sales'].sum()]})
        # 第一个参数传writer,用统一的管理器写入
        df1.to_excel(writer,
               index=False,
               header=False,
               startrow=5,
               startcol=3,
               )

    def file2(file_name_two):
        importing2 = pd.read_csv(file_name_two)
        df2 = pd.DataFrame(data={'Net Sales':[importing2['Net Sales'].sum()]})
        df2.to_excel(writer,
               index=False,
               header=False,
               startrow=6,
               startcol=3,
               )

    def file3(file_name_three):
        importing3 = pd.read_csv(file_name_three)
        df3 = pd.DataFrame(data={'Amount':[importing3['Amount'].sum()]})
        df3.to_excel(writer,
               index=False,
               header=False,
               startrow=7,
               startcol=3,
               )

    # 直接调用函数即可,不需要print(你的函数没有返回值,print只会输出None)
    file1(r"example1.csv")
    file2(r"example2.csv")
    file3(r"example3.csv")

补充说明

如果你后续需要往已经存在的Excel文件里追加新内容,不想删掉之前已经写好的内容,可以把ExcelWriter的初始化代码改成:

with pd.ExcelWriter('excelfile.xlsx', mode='a', if_sheet_exists='overlay') as writer:

其中mode='a'代表追加写入模式,if_sheet_exists='overlay'代表在原有Sheet的内容基础上叠加写入,不会清空原有内容。

内容的提问来源于stack exchange,提问作者Mirkyly

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 09:54:06