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

Applying style to values of only one column in dataframe

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

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 来在系列上使用应用函数,如下所示:

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

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

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

使用 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']))