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

2024-06-16 13:30:39 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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')

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

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

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

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


Tags: lambdadfifstyle颜色样式colgreen
1条回答
网友
1楼 · 发布于 2024-06-16 13:30:39

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

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

相关问题 更多 >