如何根据单元格值条件修改pandas指定列的背景颜色
实现方法
你现有代码有几处需要修正才能实现「Age列值为33时修改对应单元格背景色」的需求:
- 你当前使用的
color: 颜色值是CSS中控制字体颜色的属性,修改单元格背景色需要使用background-color属性 applymap默认会对整张表所有单元格生效,你只需要针对Age列做判断,不需要给其他列套样式规则,可以通过subset参数指定样式生效的列范围df.style.applymap()会返回独立的Styler样式对象,直接print(df)输出的是未加样式的原始DataFrame,看不到样式效果,需要在支持Styler渲染的环境(比如Jupyter Notebook)调用这个对象,或者用它的导出方法生成带样式的文件。
可直接运行的正确代码如下:
import pandas as pd df = pd.DataFrame.from_dict( { "Nombre": ["Mike", "Jordan", "John"], "Age": [33, 45, 20], "Lugar": ["Arg", "Pol", "Ind"] } ) def set_age_bg(val): # 值等于33时返回绿色背景样式,其余情况不设置特殊背景 return "background-color: green" if val == 33 else "" # 指定样式仅在Age列生效 styled_table = df.style.applymap(set_age_bg, subset=["Age"]) # Jupyter环境直接运行styled_table即可看到带背景色的表格 # 需要导出带样式的网页表格可以用下面的代码 # styled_table.to_html("age_styled_table.html")
如果你需要给Age列不等于33的单元格也设置红色背景,只需要把样式函数修改为:
def set_age_bg(val): bg = "green" if val == 33 else "red" return f"background-color: {bg}"
内容的提问来源于stack exchange,提问作者Lautaro Casalini
相关产品推荐
相关产品推荐

