小能豆

使用 pandas 在 Excel 中根据另一列中的值对列进行颜色编码

py

我有一个 Pandas 数据框,然后将其写入 Excel 表:

措施 价值 下限 上限
一个 1 0.1 1.2
2 0.5 1.5
10 1 100

我想根据“值”包含在“下限”和“上限”之间的条件对“值”列进行颜色编码。

到目前为止,我所做的是创建一个名为“在限制范围内”的额外列来检查条件是真还是假,但对于这种情况,我只能在熊猫中找到对“在限制范围内”列本身进行颜色编码的解决方案,而不是“值”列。

有没有办法根据另一列值进行颜色编码?


阅读 7

收藏
2025-01-12

共1个答案

小能豆

您可以使用自定义函数:

def color(df):
    out = pd.DataFrame(None, index=df.index, columns=df.columns)
    out['value'] = (df['value']
                    .between(df['lower limit'], df['upper limit']) 
                    .map({True: 'background-color: yellow'})
                    )
    return out

df.style.apply(color, axis=None)

带参数:

def color(df, value, low, high, color='red'):
    out = pd.DataFrame(None, index=df.index, columns=df.columns)
    out[value] = (df[value]
                    .between(df[low], df[high]) 
                    .map({True: f'background-color: {color}'})
                    )
    return out

df.style.apply(color, value='value', low='lower limit', high='upper limit',
               color='yellow', axis=None)

输出:

1.png

2025-01-12