pandas的to_excel用法,覆盖了其他sheet

yesong_zhang 2018-04-10 03:57:16
我用pandas的to_excel来写入到已经存在的excel表格,但是发现不用的几张sheet被删除了,怎么做才能不删除其他不操作到的表格。以下excel文件test中有多张表格,发现运行后selected_name对应的sheet写入后,另外的sheet被删除了。

def sortingExcel():
print('>>>start sorting excel data...')
so=pd.DataFrame(pd.read_excel(io=os.path.join(os.getcwd(),'test.xlsx'),sheet_name=selected_name,header=0))
so1=so.sort_values(by=['mac'],ascending=True)

writer = pd.ExcelWriter(os.path.join(os.getcwd(),'test.xlsx'))
so1.to_excel(writer,sheet_name=selected_name,index=0,startrow=0,startcol=0)
writer.save()


print('>>>sorting excel data ok!')

sortingExcel()
...全文
2935 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_37188778 2020-05-24
  • 打赏
  • 举报
回复
这个问题是没有调节好每条语句的顺序导致的 下面是一个语句顺序的模板

writer = pd.ExcelWriter('/home/lei/Downloads/泥石流视频/IntegrateData/ROC.xlsx')

for video_Path in glob.glob(os.path.join(video_Dir, '*')):
    data = pd.DataFrame(c) 
    sheetName = 'video_{}'.format(filename)
    data.to_excel(writer, sheetName, float_format='%.5f')
    
writer.save()
writer.close()
需要注意的是要在循环外面进行writer的操作,循环内只能写入,这样就不会覆盖了
陈年椰子 2018-04-11
  • 打赏
  • 举报
回复
引用 1 楼 zys304 的回复:
[quote=引用 楼主 zys304 的回复:] 我用pandas的to_excel来写入到已经存在的excel表格,但是发现不用的几张sheet被删除了,怎么做才能不删除其他不操作到的表格。以下excel文件test中有多张表格,发现运行后selected_name对应的sheet写入后,另外的sheet被删除了。 def sortingExcel(): print('>>>start sorting excel data...') so=pd.DataFrame(pd.read_excel(io=os.path.join(os.getcwd(),'test.xlsx'),sheet_name=selected_name,header=0)) so1=so.sort_values(by=['mac'],ascending=True) writer = pd.ExcelWriter(os.path.join(os.getcwd(),'test.xlsx')) so1.to_excel(writer,sheet_name=selected_name,index=0,startrow=0,startcol=0) writer.save() print('>>>sorting excel data ok!') sortingExcel()
好像这个无解是吗,只能用其他模块了。。[/quote] 这句应该是关键, 建了一个sheets 列表, 免得覆盖。
writer.sheets = dict((ws.title, ws) for ws in book.worksheets)
陈年椰子 2018-04-11
  • 打赏
  • 举报
回复
刚查到一个方法, 测试通过 建立 test.xlsx 放几列数据, 建立test2.xlsx

import pandas
from openpyxl import load_workbook

df = pandas.read_excel('test.xlsx')
print df
book = load_workbook('test2.xlsx')
writer = pandas.ExcelWriter('test2.xlsx', engine='openpyxl')
writer.book = book
writer.sheets = dict((ws.title, ws) for ws in book.worksheets)

df.to_excel(writer, "Main",index=0,startrow=0,startcol=0)

writer.save()
yesong_zhang 2018-04-11
  • 打赏
  • 举报
回复
引用 楼主 zys304 的回复:
我用pandas的to_excel来写入到已经存在的excel表格,但是发现不用的几张sheet被删除了,怎么做才能不删除其他不操作到的表格。以下excel文件test中有多张表格,发现运行后selected_name对应的sheet写入后,另外的sheet被删除了。 def sortingExcel(): print('>>>start sorting excel data...') so=pd.DataFrame(pd.read_excel(io=os.path.join(os.getcwd(),'test.xlsx'),sheet_name=selected_name,header=0)) so1=so.sort_values(by=['mac'],ascending=True) writer = pd.ExcelWriter(os.path.join(os.getcwd(),'test.xlsx')) so1.to_excel(writer,sheet_name=selected_name,index=0,startrow=0,startcol=0) writer.save() print('>>>sorting excel data ok!') sortingExcel()
好像这个无解是吗,只能用其他模块了。。

37,722

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧