You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jupyter Notebook中Pandas背景渐变样式不显示问题解决

Pandas Style Background Gradient Not Working in Jupyter Notebook (Fixed!)

最近在Jupyter Notebook里折腾Pandas样式的时候踩了个坑,分享给大家避避坑:我尝试给DataFrame添加背景渐变提升可读性,跟着文档示例写了代码后,表格始终只显示普通样式,背景颜色完全不生效。试过用display()、print()调用样式对象,还换了好几种colormap,都没效果。不过奇怪的是,用applymap()设置字体颜色的功能倒是正常工作。

有问题的代码

import seaborn as sns
import pandas as pd
cm = sns.light_palette('green', as_cmap=True)
df_res = pd.DataFrame(index =['foo','bar'],columns = ['Value 1','Value 2','Value 3'])
df_res.loc['foo'] = [-.5*100, .3,.2]
df_res.loc['bar'] = [.3*100, .6,.9]
df_res.style.background_gradient(cmap=cm)

正常工作的applymap代码

def color_negative_red(val):
    """ Takes a scalar and returns a string with the css property `'color: red'` for negative strings, black otherwise. """
    color = 'red' if val < 0 else 'black'
    return 'color: %s' % color
df_res.style.applymap(color_negative_red)

问题原因与解决方案

折腾了半天终于找到根源:Pandas默认会把空DataFrame的元素类型初始化为object,而background_gradient()需要数值类型(比如float)才能正常计算渐变颜色。

只需要在初始化DataFrame的时候加上.astype('float'),强制把数据类型转为浮点型,就能让背景渐变正常生效了:

import seaborn as sns
import pandas as pd
cm = sns.light_palette('green', as_cmap=True)
# 关键改动:添加.astype('float')确保数值类型
df_res = pd.DataFrame(index =['foo','bar'],columns = ['Value 1','Value 2','Value 3']).astype('float')
df_res.loc['foo'] = [-.5*100, .3,.2]
df_res.loc['bar'] = [.3*100, .6,.9]
df_res.style.background_gradient(cmap=cm)

内容的提问来源于stack exchange,提问作者emilaz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:50:13