如何为Pandas DataFrame的分类变量单元格设置条件高亮样式
错误原因
df.style.apply() 默认会将整行/整列的Series对象传入自定义函数,你的highlight_cells里直接对整个Series做等值判断,pandas无法直接返回单个布尔值,因此抛出歧义错误。
修正方案
你只需要把apply替换为针对单个单元格生效的applymap即可,函数逻辑基本不用调整,完整代码如下:
def highlight_cells(x): if x == "high": color = "red" elif x == "medium": color = "orange" elif x == "low": color = "yellow" else: # 覆盖NaN等其他取值 color = "gray" return f"background-color: {color}" # 替换apply为applymap应用样式 value_matrix_classification.style.applymap(highlight_cells)
补充说明:如果你的pandas版本≥2.1.0,
applymap已被标记为废弃,替换为value_matrix_classification.style.map(highlight_cells)即可得到相同效果。
该方案已经内置了NaN值的灰色背景逻辑,不需要再单独调用highlight_null方法。
内容的提问来源于stack exchange,提问作者hbstha123
相关产品推荐
相关产品推荐

