如何在for循环中写入同一工作簿中的单独excel工作表?

时间:2018-01-13 04:53:09

标签: python excel pandas for-loop dataframe

我有一个for循环来计算DataFrame并将它们输出到excel表。现在,我可以将一个完整的DF导出到一个Excel工作表。

如下所示,我正在尝试在for循环中添加代码,以便它可以对许多DF执行此计算,并将每个DF导出到同一工作簿中的单独的Excel工作表,由sheet_name描绘。

list = ["AUD_JPY", "AUD_USD"]
granularity = "D"
bar_count = 5000
MA_list = [20, 50]

writer = pd.ExcelWriter('BT.xlsx')
resultsDF = pd.DataFrame(columns = ['instrument', 'Start date', 'End date']

for MA in MA_list:    
    for instrument in list:
...
        data = {'instrument': [instrument], 'Start date': [startDate], 'End date': [endDate]}            
        resultsDF = resultsDF.append(data, ignore_index=True)
        instrument=+1

resultsDF.to_excel(writer, sheet_name='Price_Over_SMA{0}_{1}'.format(MA, 
granularity))
writer.save()

MA=+1

这只将第一个DF从'instrument'循环输出到excel表。我得到这个工作表:

DF-worksheet output

但是我也希望在这种情况下导出另一个应该被称为“Price_Over_SMA50_D”的工作表。

不确定我做错了什么。

由于

2 个答案:

答案 0 :(得分:0)

我发现这是一个将writer.save()移到我的'MA'之外的for循环并在每次循环后重置DF的问题。

答案 1 :(得分:0)

使用Pandas,您可以将不同的数据帧保存到同一个excel文件的不同表中:

假设我有一个数据框 dfs 列表,我希望将其保存为excel文件中的单独工作表,其绝对路径为 file_name

您可以使用以下内容:

import pandas as pd
file_name = # you excel file name you're saving
dfs = # my list of dataframes
for i, df in enumerate(dfs):
    df.to_excel(file_name, sheetname='Sheet_{0}'.format(i))