使用pandas样式突出显示单个列

时间:2019-01-05 18:54:38

标签: python html python-3.x pandas

我已经创建了一个熊猫数据框,然后我想将background-color:red添加到数据框的任何选定列中,并以html突出显示该数据框。

我的桌子的形状如下:

import pandas as pd
import numpy as np

np.random.seed(24)
frame = pd.DataFrame({'A': np.linspace(1, 10, 10)})
frame = pd.concat([frame, pd.DataFrame(np.random.randn(10, 12), 
columns=list('BCDEFGHIJKLM'))],axis=1)

我在另一个类似问题的stackoverflow页面上找到了此功能,但失败了:

(试图按位置查找列)

def highlighter(col):
    r = 'background-color: red'
    df1 = pd.DataFrame('', index=col.index, columns=col.columns)
    df1.iloc[:, 8] = r
    return df1
tab = frame.style.apply(highlighter, axis=None).render()    
print(tab) 

这是我创建的另一个函数,但也失败了:

(试图通过调用特定的列名来查找列)

def highlighter(df, col):
    df = pd.DataFrame()
    return ['background-color:red' if col in df.columns else 'background-color:white']

tab = frame.style.apply(highlighter(col='C'), axis=None).render()
print(tab)

当我打印呈现的表格时,表格应该只有一列,其背景颜色为红色,但是我看不到这样的突出显示

1 个答案:

答案 0 :(得分:1)

尝试一下:

def highlighter(col):
    r = 'background-color: red'
    df1 = pd.DataFrame('', index=col.index, columns=col.columns)
    df1.iloc[:, 8] = r
    return df1
tab = frame.style.apply(highlighter, axis=None)

with open('tab.html', 'w') as html:
    html.write(tab.render())

enter image description here