【问题标题】:Python XlsxWriter conditional format several cells conditioned on the value in a single cellPython XlsxWriter 条件格式几个单元格以单个单元格中的值为条件
【发布时间】:2019-11-24 04:49:35
【问题描述】:

如果第一列中的值大于 7,我想突出显示表格的整行(不包括索引)。我目前可以使用以下代码突出显示第一个单元格:

import pandas as pd

df = pd.DataFrame({'A':[6, 4, 8, 2], 'B':[.3, .2, .4, .1], 'C': [12, 13, 14, 15]})

with pd.ExcelWriter('temp.xlsx', engine='xlsxwriter') as writer:
    workbook = writer.book
    df.to_excel(writer)
    worksheet = workbook.worksheets()[0]

    format_yellow = workbook.add_format({'bg_color': '#FFFF00'})

    worksheet.conditional_format('B2:B5', {'type':     'cell',
                                           'criteria': '>',
                                           'value':    7,
                                           'format':   format_yellow})

这是我得到的: get

这就是我想要的: want

【问题讨论】:

    标签: excel python-3.x pandas conditional-formatting xlsxwriter


    【解决方案1】:

    为了弄清楚如何在 XlsxWriter 中执行条件格式,您需要先弄清楚如何在 Excel 中执行,然后将其应用于 XlsxWriter。

    在这种情况下,您可能需要formula 条件格式,而不是cell 类型,并且您需要扩展格式适用的范围。像这样:

    import pandas as pd
    
    df = pd.DataFrame({'A': [6, 4, 8, 2],
                       'B': [.3, .2, .4, .1],
                       'C': [12, 13, 14, 15]})
    
    with pd.ExcelWriter('temp.xlsx', engine='xlsxwriter') as writer:
        workbook = writer.book
        df.to_excel(writer)
        worksheet = workbook.worksheets()[0]
    
        format_yellow = workbook.add_format({'bg_color': '#FFFF00'})
    
        worksheet.conditional_format('B2:D5', {'type':     'formula',
                                               'criteria': '=$B2>7',
                                               'format':   format_yellow})
    
    

    输出:

    注意$B2 中列的absolute 定位,以便它在条件格式范围内保持固定,而行的relative 定位允许它更改。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-24
      • 1970-01-01
      相关资源
      最近更新 更多