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

问题描述 投票:0回答:1

我正在生成数据帧的函数上运行循环,如下所示:

        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。

python excel pandas dataframe append
1个回答
0
投票

根据此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)}')
© www.soinside.com 2019 - 2024. All rights reserved.