2016-02-29 388 views
2

我想让代码通过循环运行12345,将其输入到工作表中,然后在54321上启动并执行相同的操作,除了将数据框输入到新的工作表中,相同的工作簿。以下是我的代码。将多个熊猫数据框写入多个excel工作表

workbook = xlsxwriter.Workbook('Renewals.xlsx') 

groups = ['12345', '54321'] 

for x in groups: 

    (Do a bunch of data manipulation and get pandas df called renewals) 

    writer = pd.ExcelWriter('Renewals.xlsx', engine='xlsxwriter') 
    worksheet = workbook.add_worksheet(str(x)) 
    renewals.to_excel(writer, sheet_name=str(x)) 

运行时,剩下的工作簿只有一个工作表(54321)。

回答

2

尝试这样的事:

import pandas as pd 
#initialze the excel writer 
writer = pd.ExcelWriter('MyFile.xlsx', engine='xlsxwriter') 

#store your dataframes in a dict, where the key is the sheet name you want 
frames = {'sheetName_1': dataframe1, 'sheetName_2': dataframe2, 
     'sheetName_3', dataframe3} 

#now loop thru and put each on a specific sheet 
for sheet, frame in frames.iteritems(): # .use .items for python 3.X 
    frame.to_excel(writer, sheet_name = sheet) 

#critical last step 
writer.save() 
+0

我想我有一个问题是,我只有每次1个数据帧。基本上我的代码从12345的第一组开始。它操作数据,我留下了一个结束数据框。完成后,重新开始下一组。所以最后,我将留下与新数据相同的数据框。如果这是有道理的。 – Milhouse

+0

划痕,你的方法工作。谢谢。 – Milhouse

相关问题