排查Python的 Great Tables包引发的KeyError:'font_color_row_striping_background_color'
在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导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。
