【问题标题】:Format entire row with conditional_format using pandas xlswriter module使用 pandas xlsxwriter 模块以条件格式格式化整行
【发布时间】:2018-01-30 17:27:35
【问题描述】:

我正在使用 pandas xlswriter 模块创建一个 excel 报告。下面的代码-sn-p 相同。

number_rows = len(df.index)
//df is dataframe

writer = pd.ExcelWriter("Report_1.xlsx",engine='xlsxwriter')
df.to_excel(writer,"report")

workbook = writer.book
worksheet = writer.sheets['report']

# Define range for the color formatting
color_range = "A2:F{}".format(number_rows+1)


format1 = workbook.add_format({'bg_color': '#FFC7CE',
                               'font_color': '#9C0006'})

worksheet.conditional_format(color_range, {'type': 'text',
                                           'criteria' : 'containing',
                                           'value': 'SUCCESS',
                                           'format': format1})

我想根据单元格值 (=SUCCESS) 突出显示一行 ('bg_color': '#FFC7CE', 'font_color': '#9C0006')。但是当我使用“conditional_format”时,它只适用于那个特定的单元格。如果“条件”与单元格值匹配,有什么方法可以将格式应用于整行?

【问题讨论】:

    标签: python pandas xlsxwriter


    【解决方案1】:

    我在下面提供了一个完全可重现的示例,它使用了 Excel (Link here) 中的 INDIRECT() 函数。请注意,我已将范围设置为 $A$1:$B$6,但如果您有更多列,您可以将其扩展到不同的范围。

    import pandas as pd
    
    df = pd.DataFrame({"Name": ['A', 'B', 'C', 'D', 'E'], 
    "Status": ['SUCCESS', 'FAIL', 'SUCCESS', 'FAIL', 'FAIL']})
    
    number_rows = len(df.index) + 1
    
    writer = pd.ExcelWriter('Report_1.xlsx', engine='xlsxwriter')
    
    df.to_excel(writer, sheet_name='Sheet1', index=False)
    
    workbook  = writer.book
    worksheet = writer.sheets['Sheet1']
    
    format1 = workbook.add_format({'bg_color': '#FFC7CE',
                                  'font_color': '#9C0006'})
    
    worksheet.conditional_format("$A$1:$B$%d" % (number_rows),
                                 {"type": "formula",
                                  "criteria": '=INDIRECT("B"&ROW())="SUCCESS"',
                                  "format": format1
                                 }
    )
    
    workbook.close()
    

    在 excel 中具有预期输出:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-10
      • 2023-03-08
      • 2017-02-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多