循环创建多个数据框并写入excel

时间:2020-02-09 12:45:24

标签: python excel pandas dataframe append

我正在对产生数据帧的函数进行循环,如下所示:

        Prd1    Prd2     Prd3    Prd4    Prd5    Prd6
Loc1    0        0        0        0       0       0
Loc2    0        0        0        0       0       0
Loc3    0      30.61      0        0   319.58   430.87  
Loc4    0        0        0        0       0    120.73
Loc5    0        0        0        0       0       0
Loc6    78.21  822.36     0        0       0       0

我想多次运行该函数,以生成一系列数据框,然后分析或可视化随时间的演变。为此,最好将它们全部合并在一个excel工作簿中。但是,我为此而苦苦挣扎。 我尝试过

for case in CASES:
    B= A[case]
    result = function(B)
    print(result)
    with pd.ExcelWriter('results.xlsx') as writer:  # doctest: +SKIP
        result.to_excel(writer, sheet_name='case_'+str(case))

我希望这会将不同的结果写入同一电子表格。但是结果是,电子表格仅包含最后一种情况的选项卡。 我可以看到以上情况在CASES循环中如何每次都会覆盖现有工作表。 是否有功能来保存已经存在的工作表并将任何新工作表“追加”到现有工作簿? 提前致谢。 关于P。

1 个答案:

答案 0 :(得分:1)

根据此SO thread,您可以在开始循环之前检索工作表名称列表,并检查现有工作表并跳过它们。

xl = pd.ExcelFile('results.xlsx')
existing_sheets = xl.sheet_names

for case in CASES:
    if f'cast_{str(case)}' in existing_sheets:
        continue
    B= A[case]
    result = function(B)
    print(result)
    with pd.ExcelWriter('results.xlsx') as writer:  # doctest: +SKIP
        result.to_excel(writer, sheet_name=f'case_{str(case)}')
相关问题