条件格式 pandas

Conditional formatting pandas

如何为 C 列将低于 1 的单元格着色为绿色,将介于 0 和 0.5 之间的单元格着色为黄色。

当前输出:

   A    B    C
0 TT    WW   -5
1 AA    WW   0
2 DD    WW   5

期望:

我的以下代码只是写入 Excel,没有颜色变化。

import pandas as pd
import numpy as np


df = pd.read_excel("C:\13\13\13.xlsx")
def highlight_vals(val, min=-1111, max=1, color='green'):
    if min < val < max:
        return 'background-color: %s' % color
    else:
        return ''
df.style.applymap(highlight_vals, subset=['C'])

def highlight_vals(val, min=0, max=0.5, color='yellow'):
    if min < val < max:
        return 'background-color: %s' % color
    else:
        return ''
df.style.applymap(highlight_vals, subset=['C'])


writer = pd.ExcelWriter("C:\13\13\zz.xlsx")
df.to_excel(writer, startrow=0, startcol=0, index = False)

writer.save()

这应该有效:

import pandas as pd
import numpy as np


df = pd.read_excel("C:\13\13\13.xlsx")
def highlight_vals(val, min=-1111, max=1, color='green'):
    if min <= val <= max:
        return 'background-color: %s' % color
    else:
        return ''
style_1 = df.style.applymap(highlight_vals, subset=['C'])

def highlight_vals(val, min=0, max=0.5, color='yellow'):
    if min <= val <= max:
        return 'background-color: %s' % color
    else:
        return ''
style_2 = df.style.applymap(highlight_vals, subset=['C'])

style_1.use(style_2.export())

writer = pd.ExcelWriter("C:\13\13\zz.xlsx")
style_1.to_excel(writer, startrow=0, startcol=0, index = False)

writer.save()

我保留了两个 Styler 对象,将一个对象应用到另一个对象上并将生成的对象保存到 Excel 而不是数据帧。另请注意,我已修复您的条件。否则,你不会因为min < val

而得到黄色