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

Python:用for循环实现表格数值分色可视化(Jupyter无效果问题)

解决Jupyter Notebook中表格字体颜色不显示的问题

你的代码看不到颜色的核心原因是:termcolor库的colored()函数生成的是终端专用的ANSI颜色转义序列,而Jupyter Notebook通过HTML渲染表格,无法识别这种格式,自然看不到颜色。此外,代码里还存在未定义变量tabla_formateada的错误,导致无法正常生成表格。

修正方案1:手动构建HTML表格(适配你的原代码逻辑)

直接用HTML的CSS样式设置字体颜色,替代termcolor:

import pandas as pd
from IPython.display import HTML

# 创建示例DataFrame
df = pd.DataFrame({
    'Dependencias': ['A', 'B', 'A', 'B', 'C'],
    'tiempo': [10, 20, 30, 40, 50]
})

# 计算各Dependencias的时间平均值
promedio_tiempo_por_dependencias = df.groupby('Dependencias')['tiempo'].mean()

# 计算总平均值
promedio_total = promedio_tiempo_por_dependencias.mean()

# 构建HTML表格框架
html_table = '<table border="1"><tr><th>Dependencias</th><th>Promedio de tiempo</th></tr>'

# 遍历添加各行,根据数值大小设置颜色
for index, value in promedio_tiempo_por_dependencias.items():
    color = 'green' if value < promedio_total else 'red'
    html_table += f'<tr><td>{index}</td><td style="color: {color};">{value}</td></tr>'

# 添加总平均值行,设置蓝色加粗样式
html_table += f'<tr><td style="color: blue; font-weight: bold;">Promedio total</td><td style="color: blue; font-weight: bold;">{promedio_total}</td></tr>'

html_table += '</table>'

# 在Jupyter中渲染表格
display(HTML(html_table))

修正方案2:用Pandas Styler实现(更简洁高效)

利用Pandas内置的Styler工具,无需手动拼接HTML,代码更易维护:

import pandas as pd
from IPython.display import display

# 创建示例DataFrame
df = pd.DataFrame({
    'Dependencias': ['A', 'B', 'A', 'B', 'C'],
    'tiempo': [10, 20, 30, 40, 50]
})

# 计算分组平均值并转换为DataFrame
promedio_df = df.groupby('Dependencias')['tiempo'].mean().reset_index()
promedio_df.columns = ['Dependencias', 'Promedio de tiempo']

# 计算总平均值并添加到表格末尾
promedio_total = promedio_df['Promedio de tiempo'].mean()
promedio_df = pd.concat([
    promedio_df,
    pd.DataFrame([{'Dependencias': 'Promedio total', 'Promedio de tiempo': promedio_total}])
], ignore_index=True)

# 定义样式规则函数
def apply_color(val):
    # 处理总平均值行的样式
    if val == 'Promedio total':
        return 'color: blue; font-weight: bold;'
    # 处理数值单元格的颜色
    try:
        num_val = float(val)
        if num_val < promedio_total and val != promedio_total:
            return 'color: green;'
        elif num_val > promedio_total:
            return 'color: red;'
        else:
            return 'color: blue; font-weight: bold;'
    except:
        return ''

# 应用样式并显示表格
styled_table = promedio_df.style.applymap(apply_color)
display(styled_table)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 16:03:19