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
相关产品推荐
相关产品推荐

