根据条件突出显示数据框中的行

Highlight rows in dataframe based on condition

我有数据框 df :

id    product. 2021-01.   2021-02  2021-03
caw2.  A.        12.         31       10
ssca.  B         12.         13       34
dsce.  c         11          13       32

我想用红色突出显示最后一列 (2021-03) 小于前一列 (2021-02) 的记录,并用绿色突出显示最后一列大于前一列的记录。

我是 运行 Jupyter Notebook 中的代码。

你可以试试

def highlight(df):
    m1 = df['2021-03'] > df['2021-03'].shift()
    m2 = df['2021-03'] < df['2021-03'].shift()

    color = 'background-color: {}'.format

    style = pd.Series([color('')]*df.shape[0])
    style = style.mask(m1, color('green'))
    style = style.mask(m2, color('red'))
    style = pd.concat([style]*df.shape[1], axis=1)
    style.columns = df.columns
    style.index = df.index

    return style

s = df.style.apply(highlight, axis=None)