Python 将样式仅应用于dataframe中一列的值

Python 将样式仅应用于dataframe中一列的值,python,pandas,Python,Pandas,我想对特定的颜色应用一些过滤条件。基于过滤器,我想突出显示该单元格 但问题是它适用于每个细胞。因此,我在一个系列上使用了apply函数,将其转换为df,如下所示: df['a'] =df[['a']].style .apply(lambda v: 'background-color: %s' % 'green' if v=='col' else '') 在这种情况下,当我将df导出到excel时,它给出的是样式对象而不是值 如果我不将该样式化结果分配给df['a']并

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

但问题是它适用于每个细胞。因此,我在一个系列上使用了apply函数,将其转换为df,如下所示:

df['a'] =df[['a']].style
            .apply(lambda v: 'background-color: %s' % 'green' if v=='col' else '')
在这种情况下,当我将df导出到excel时,它给出的是样式对象而不是值

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

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

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


否定在子集中起作用吗?像我可以提供一个col,它应该适用于所有col,但that@EXODIA-添加了答案。@jezael:我们不能对已设置样式的对象应用其他样式?就像我在一个过滤器上应用这个背景一样,我想在diff背景上应用更多的样式。并保留所有更改。为@jezrael@EXODIA创建了一个新问题-我认为不可能,根据条件某种程度上合并多种样式。不确定可能的解决方案是否是使用
apply
like
f = lambda v: 'background-color: %s' % 'green' if v=='col' else ''
df = df.style.applymap(f, subset=['a'])
df = df.style.applymap(f, subset=df.columns.difference(['a']))