Pandas HTML输出条件格式 - 如果值在范围内,则突出显示单元格

Fel*_*lix 5 html formatting conditional pandas

我正在使用pd.to_html()方法构建HTML格式的报告.任何人都可以澄清我如何格式化具有-0.5和0.5之间的值的单元格以及特定数据帧列的绿色背景?

jor*_*ris 14

您可以使用style属性(从pandas v0.17.1开始引入)自定义DataFrames格式.做你想做的事的一个例子:

df = pd.DataFrame(np.random.randn(5,5), columns=list('ABCDE'))

def highlight_vals(val, min=-0.5, max=0.5, color='green'):
    if min < val < max:
        return 'background-color: %s' % color
    else:
        return ''

df.style.applymap(highlight_vals, subset=['B', 'C', 'D'])
Run Code Online (Sandbox Code Playgroud)

给你

在此输入图像描述

有关完整示例,请参阅此笔记本:http://nbviewer.jupyter.org/gist/jorisvandenbossche/8b74f71734cd6d75a58c5a048261a7a7

有关如何格式化数据框的更多示例,请参阅文档:http://pandas.pydata.org/pandas-docs/stable/style.html

要将输出写入文件,您可以执行以下操作:

with open('filename.html', 'w') as f:
    f.write(df.style.applymap(highlight_vals, subset=['B', 'C', 'D'])
                    .set_table_attributes("border=1").render())
Run Code Online (Sandbox Code Playgroud)

  • 你说的没错.由于某种原因,样式模板在表标记中不包含`border = 1`.您可以使用`.set_table_attributes("border = 1")`添加它.我更新了答案. (2认同)