将样式应用于数据框中仅一列的值

时间:2021-06-04 08:09:36

标签: python pandas

我想对特定列应用一些过滤条件。基于过滤器,我想突出显示该单元格。

I took this example from another post:

styled = (df.style
            .applymap(lambda v: 'background-color: %s' % 'green' if v=='col' else ''))
styled.to_excel('d:/temp/styled.xlsx', engine='openpyxl')

但问题在于它适用于每个单元格。因此,我改为通过将其转换为 df 来在系列上使用 apply 函数,如下所示:

df['a'] =df[['a']].style
            .apply(lambda v: 'background-color: %s' % 'green' if v=='col' else '')

在这种情况下,当我将 df 导出到 excel 时,它会提供样式对象而不是值。

如果我不将该样式化的结果分配给 df['a'] 并直接转换为 excel,那么我将获得所需的样式结果,但是我将只得到该列而不是整个数据框

1 个答案:

答案 0 :(得分:1)

使用 subset 参数指定应用样式的列:

f = lambda v: 'background-color: %s' % 'green' if v=='col' else ''
df = df.style.applymap(f, subset=['a'])

对于否定使用 Index.difference:

df = df.style.applymap(f, subset=df.columns.difference(['a']))
相关问题