排查Python的 Great Tables包引发的KeyError:'font_color_row_striping_background_color'

前端开发 2026-07-12

在Python中使用Great Tables时,我遇到了这个错误,但我不知道它是什么意思或该如何修复。无论是在对表格调用.show() 还是在尝试将其保存为PNG时,我都会遇到这个错误,表格是用以下代码创建的:

Top25_gt = (
    GT(VoATable_Top25df)
    .tab_header(
        title = "MCBB D1 Vortex of Accuracy Ratings",
    )
    .fmt_number(
        columns = ["OvrlVoA_MeanRating", "OffVoA_MeanRating", "DefVoA_MeanRating"],
        decimals = 3
    )
    .fmt_number(
        columns=["OvrlVoARanking"],
        decimals=0
    )
    .data_color(
        columns = ["OvrlVoA_MeanRating", "OffVoA_MeanRating"],
        palette = "RdYlGn",
        na_color = "white"
    )
    .data_color(
        columns = ["DefVoA_MeanRating"],
        palette = "RdYlGn",
        reverse = True,
        na_color = "white"
    )
    # Column Labels
    .cols_label(
        OvrlVoA_MeanRating = "Overall VoA Rating",
        OvrlVoARanking = "VoA Ranking",
        OffVoA_MeanRating = "Off VoA Rating",
        OffVoARanking = "Off Ranking",
        DefVoA_MeanRating = "Def VoA Rating",
        DefVoARanking = "Def Ranking"
    )
    # Add source note
    .tab_source_note(
        source_note = "Table by @gshelor, Data from CBBD API"
    )
)

Top25_gt.show()

是不是我创建表格的方式有问题?

解决方案

这是旧版本的Great Tables中的一个已知错误。

pip install --upgrade great-tables

如果由于某些原因你无法升级,可以通过在对 data_color() 的调用中禁用自动文本着色来变通解决:

.data_color(
    columns=["OvrlVoA_MeanRating", "OffVoA_MeanRating"],
    palette="RdYlGn",
    na_color="white",
    autocolor_text=False  # disables the problematic code path
)

备选方案

我猜这个错误是由较旧版本的Great Tables引起的。我尝试实现这段代码,结果对我有用,我只是通过浏览器完成的,但你也可以使用Playwright或 Selenium将其导出为PNG

import pandas as pd
from great_tables import GT

# Sample data matching your column structure
VoATable_Top25df = pd.DataFrame({
    "Team": ["Team A", "Team B", "Team C", "Team D", "Team E"],
    "OvrlVoA_MeanRating": [0.923, 0.871, 0.845, 0.812, 0.798],
    "OvrlVoARanking":     [1,     2,     3,     4,     5],
    "OffVoA_MeanRating":  [0.910, 0.880, 0.820, 0.800, 0.775],
    "OffVoARanking":      [1,     2,     3,     4,     5],
    "DefVoA_MeanRating":  [0.935, 0.862, 0.870, 0.825, 0.810],
    "DefVoARanking":      [2,     1,     3,     4,     5],
})

Top25_gt = (
    GT(VoATable_Top25df)
    .tab_header(title="MCBB D1 Vortex of Accuracy Ratings")
    .fmt_number(
        columns=["OvrlVoA_MeanRating", "OffVoA_MeanRating", "DefVoA_MeanRating"],
        decimals=3
    )
    .fmt_number(columns=["OvrlVoARanking"], decimals=0)
    .data_color(
        columns=["OvrlVoA_MeanRating", "OffVoA_MeanRating"],
        palette="RdYlGn",
        na_color="white"
    )
    .data_color(
        columns=["DefVoA_MeanRating"],
        palette="RdYlGn",
        reverse=True,
        na_color="white"
    )
    .cols_label(
        OvrlVoA_MeanRating="Overall VoA Rating",
        OvrlVoARanking="VoA Ranking",
        OffVoA_MeanRating="Off VoA Rating",
        OffVoARanking="Off Ranking",
        DefVoA_MeanRating="Def VoA Rating",
        DefVoARanking="Def Ranking"
    )
    .tab_source_note(source_note="Table by @gshelor, Data from CBBD API")
)

with open("output.html", "w") as f:
    f.write(Top25_gt.as_raw_html())

print("Saved to output.html")

输出

在此输入图片描述

站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章