我想对特定列应用一些过滤条件。基于过滤器,我想突出显示该单元格。
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,那么我将获得所需的样式结果,但是我将只得到该列而不是整个数据框
答案 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']))