将样式应用于数据框中仅一列的值
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']))
我想对特定列应用一些过滤条件。基于过滤器,我想突出显示该单元格。
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']))