如何在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
相关产品推荐
相关产品推荐

