将多个数据框提取到Excel文件(熊猫)时为工作表选项卡着色

时间:2018-06-21 11:00:21

标签: python pandas

我有两个CV文件,在不同条件下,我将合并选定的行以创建新的数据框,然后将这些数据框放到一个excel文件中,但散布方式不同。我将新创建的数据框和标题存储在列表中,并使用此功能创建XLSX文件:

def save_xls(list_dfs, xls_path,titles):
writer = ExcelWriter(xls_path)
for df,title in zip(list_dfs,titles):
    df.to_excel(writer,title)
writer.save()
save_xls(merged_tables,'Filename.xlsx',sheet_titles)

有效,我在一个文件中有许多不同的工作表,但我也想给这些电子表格的标签上色,其中某些列(总和)的最后一行不相同。

我做的比较:

merged_tables[0][merged_tables[0].columns[10]].iloc[-1] == merged_tables[0][merged_tables[0].columns[23]].iloc[-1] 

最后一行是总和,所以如果它不在两列的同一行中,我想通过着色来表示它。该列具有相同的名称,因此我正在按列号进行访问。它返回我是对还是错。

由于熊猫本身不提供格式化Excel表格的功能,因此我不得不使用其他库。

我从xlsxwriter文档中了解到,在写入excel时也可以将此库用作引擎,并且openpyxl还提供格式设置,所以我尝试使用它。

import openpyxl
wb2 = openpyxl.load_workbook('Filename.xlsx')
for i in wb2.worksheets:
    i.sheet_properties.tabColor ='FFFF00'

使用此代码,我可以为所有纸张着色,但是我需要在此处使用条件。

for n, (sheet,df) in enumerate(zip(wb2.worksheets,merged_tables)):
    try:
        if merged_tables[n][merged_tables[0].columns[10]].iloc[-1] == merged_tables[n][merged_tables[0].columns[23]].iloc[-1]:
            sheet.sheet_properties.tabColor ='FFFF00'
except ValueError:
    pass

我想到了这样的东西。我添加了ValueError异常,因为当行数不同时它可能会上升,但是我认为这段代码根本没有任何意义,并且它什么也不做。

那么我应该怎么做?也许最好在openpyxl中找到最后一行,并且在工作表循环时不要使用df?也许我根本不应该使用openpyxl,也许可以将xlsxwriter作为引擎使用?

0 个答案:

没有答案