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

如何在Streamlit中隐藏DataFrame表格的索引列?

解决方案

以下是经过验证的可行实现方案,优先推荐使用Streamlit原生参数的方案,兼容性最强:

方案1:使用Streamlit原生hide_index参数(首选)

Streamlit 1.10.0及以上版本,st.dataframe 接口已经原生支持隐藏索引的参数,不需要依赖pandas Styler的逻辑,不会受pandas版本变动影响:

import streamlit as st
import pandas as pd

table1 = pd.DataFrame({'N':[10, 20, 30], 'mean':[4.1, 5.6, 6.3]})
st.dataframe(
    table1.style.format(
        subset=['mean'],
        decimal=',', 
        precision=2
    ).bar(subset=['mean'], align="mid"),
    hide_index=True
)

提示:如果运行提示hide_index不是有效参数,可执行pip install --upgrade streamlit升级到Streamlit最新稳定版即可。

方案2:适配新版本pandas的Styler语法

如果你的pandas版本≥1.4.0,旧版.hide_index()方法已经被官方弃用,替换为hide(axis='index')即可生效:

import streamlit as st
import pandas as pd

table1 = pd.DataFrame({'N':[10, 20, 30], 'mean':[4.1, 5.6, 6.3]})
st.dataframe(
    table1.style.hide(axis='index')
    .format(subset=['mean'], decimal=',', precision=2)
    .bar(subset=['mean'], align="mid")
)

方案3:低版本兼容方案

如果Streamlit和pandas版本都无法升级,可先手动删除索引列再做样式渲染:

import streamlit as st
import pandas as pd

table1 = pd.DataFrame({'N':[10, 20, 30], 'mean':[4.1, 5.6, 6.3]})
# 重置索引并直接丢弃
table1_no_index = table1.reset_index(drop=True)
st.dataframe(
    table1_no_index.style.format(
        subset=['mean'],
        decimal=',', 
        precision=2
    ).bar(subset=['mean'], align="mid")
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 08:06:04