使用 Streamlit 显示数据帧索引名称

Display dataframe index name with Streamlit

以下代码不显示索引名称:

import pandas as pd
import streamlit as st

df = pd.DataFrame(['row1', 'row2'], index=pd.Index([1, 2], name='my_index'))
st.write(df)

有没有办法像在 jupyter notebook 中那样显示 my_index

我找到了一个使用 pandas 数据框 to_html() 方法的解决方案:

import pandas as pd
import streamlit as st

df = pd.DataFrame(['row1', 'row2'], index=pd.Index([1, 2], name='my_index'))
st.write(df.to_html(), unsafe_allow_html=True)

结果如下:

如果您希望索引和列名位于同一行 header 中,您可以使用以下代码:

import pandas as pd
import streamlit as st

df = pd.DataFrame(['row1', 'row2'], index=pd.Index([1, 2], name='my_index'))
df.columns.name = df.index.name
df.index.name = None
st.write(df.to_html(), unsafe_allow_html=True)

结果如下:

注意 - 如果您有一个大型数据集并且想要限制行数,请改用 df.to_html(max_rows=N),其中 N 是您要显示的行数。

根据 streamlit doc 它将数据帧写入 table。所以没有显示索引名称。

要显示 my_index 名称,请将索引重置为默认值,结果 my_index 将变为普通列。在 st.write().

之前添加以下内容
df.reset_index(inplace=True)

输出