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

如何解决StreamlitAPIException:FG%列转换失败,期望字节却获得int对象

问题排查与解决方法

错误原因定位

这个报错的核心原因是FG%列的数据类型是pandas的object混合类型,列内同时存在字符串、整数、空值等多种类型数据,Streamlit渲染DataFrame时无法统一做类型转换,才会触发类型不匹配异常。

排查步骤

  • 在st.dataframe(df_selected_team)代码前插入调试代码,确认列的混合类型情况:
# 打印列类型
print(df_selected_team['FG%'].dtype)
# 打印随机10条样本值
print(df_selected_team['FG%'].sample(10))
# 统计列内存在的数据类型占比
print(df_selected_team['FG%'].apply(type).value_counts())
  • 回溯数据清洗逻辑,确认FG%列是否存在未处理的百分比符号、空值被填充为整数、异常字符串未替换等问题。

解决方法

方法1:统一转换为数值类型(推荐)

如果需要对FG%做数值计算,可将列统一转换为浮点型:

# 先去除百分比符号,再转数值,无法转换的异常值自动设为空值
df_selected_team['FG%'] = pd.to_numeric(df_selected_team['FG%'].astype(str).str.replace('%', ''), errors='coerce')
# 可选:如果需要保留百分比语义,可转成小数格式
# df_selected_team['FG%'] = df_selected_team['FG%'] / 100

方法2:统一转换为字符串类型

如果不需要对FG%做数值计算,可直接统一转为字符串类型规避混合类型问题:

df_selected_team['FG%'] = df_selected_team['FG%'].astype(str)

方法3:渲染时指定列格式(适用于Streamlit 1.20及以上版本)

不需要修改原数据,直接在渲染时指定列格式即可:

st.dataframe(df_selected_team, column_config={
    "FG%": st.column_config.NumberColumn(format="%.2f %%")
})

修改完成后重新运行应用即可正常渲染DataFrame。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 11:09:03