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

如何在Streamlit Web应用中展示pydatatable Frame的输出

Streamlit直接展示datatable Frame的解决方案

报错原因:Streamlit原生数据组件默认仅支持pandas DataFrame、numpy数组等通用数据结构,无法直接识别datatable Frame类型,因此会在内部Arrow格式转换阶段抛出类型不匹配错误。

可行的直接展示方案(无需转pandas)

方案1:转Arrow格式适配Streamlit原生组件

datatable自带to_arrow()方法可直接输出Apache Arrow格式表格,Streamlit原生支持Arrow格式输入,无需经过pandas转换,大表场景下性能远高于转pandas的方案。
代码示例:

import datatable as dt
import streamlit as st

st.set_page_config(
    page_title="pydatatable demo",
    layout="wide",
    initial_sidebar_state="expanded"
)

DT = dt.Frame({
    'class':['a','b','c','d','e'],
    'score':[1,2,3,4,5]
})

# 静态表格展示
st.table(DT.to_arrow())
# 可交互的动态表格展示
st.dataframe(DT.to_arrow(), use_container_width=True)

方案2:渲染datatable原生交互界面

如果需要保留datatable自带的排序、筛选、搜索等专属交互功能,可以将datatable导出为HTML字符串,用Streamlit的HTML组件直接渲染:
代码示例:

# 接上面的DT定义代码
dt_html = DT.to_html()
st.components.v1.html(dt_html, height=500, scrolling=True)

方案对比

  • 方案1:和Streamlit整体UI风格统一,支持Streamlit自带的表格下载、行选择等扩展功能,适合和其他Streamlit组件联动的场景
  • 方案2:完全保留datatable原生交互能力,渲染性能更高,适合需要使用datatable专属功能的场景
  • 转pandas的方案仅适合小表场景,大表会产生额外的内存拷贝开销,优先推荐上面两种方案

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 14:39:01