将数据框显示为交互式表格。
st.dataframe(data=None, width=None, height=None)
data: 如果 'data' 是一个 pandas.Styler,它将用于设置其底层 DataFrame 的样式。 Streamlit 支持自定义单元格值和颜色。
width: 宽度。如果没有,则使用基于页面宽度的默认宽度。
height: 高度。如果没有,则使用默认高度。
df = pd.DataFrame(
np.random.randn(50, 20),
columns=('col %d' % i for i in range(20)))
st.dataframe(df)
#高亮出每一列的最大值
st.dataframe(df.style.highlight_max(axis=0))
默认的dataframe功能太少,我找了一个插件,功能还听多的,叫st_aggrid。
#pip install streamlit-aggrid
from st_aggrid import AgGrid, DataReturnMode, GridUpdateMode, GridOptionsBuilder
@st.cache()
def get_data_1():
rows=20
df = pd.DataFrame(
np.random.randint(0, 100, 3*rows).reshape(-1, 3), columns= list("abc")
)
return df
data = get_data_1()
gb = GridOptionsBuilder.from_dataframe(data)
gb.configure_columns(list('abcde'), editable=True)
# resizable=True 默认可自行调整列宽
# filterable=True 默认可进行过滤(但是我试了下,设置False,也可以过滤)
# sorteable=True 默认可自行设置排序
# editable=True 默认可以进行编辑单元格
# groupable=True 默认可以进行分组(这我没整明白什么意思)
#这个可以对原有的列进行计算,生成新的列
gb.configure_column('virtual column a + b', valueGetter='Number(data.a) + Number(data.b)', cellRenderer='agAnimateShowChangeCellRenderer', editable='false', type=['numericColumn'])
go = gb.build()
with st.form('example form') as f: #form表单
ag = AgGrid(
data,
gridOptions=go,
height=400,
fit_columns_on_grid_load=True, #列过少的时候,设置True。 列过多的时候就不用设置了
reload_data=False
)
st.form_submit_button() #在这里点击提交之后,单元格里面的修改部分就可以传到后面了
st.dataframe(ag['data'])
st.write(go)
# height: int =400,
# width=None,
# fit_columns_on_grid_load: bool=False, 将调整列以适应网格加载时的网格宽度,默认情况下为 False
# update_mode: GridUpdateMode= 'value_changed' , # 定义gird如何将结果发送回 streamlit,可以组合使用 :GridUpdateMode = VALUE_CHANGED | SELECTION_CHANGED | FILTERING_CHANGED | SORTING_CHANGED
# data_return_mode: DataReturnMode= 'as_input' , # 定义如何从组件客户端检索数据。AS_INPUT/FILTERED/FILTERED_AND_SORTED
# allow_unsafe_jscode: bool=False, # 允许在 gridOptions 中注入 jsCode
# enable_enterprise_modules: bool=False, #Loads Ag-Grid enterprise modules (check licensing)
# license_key: str=None, #见上
# try_to_convert_back_to_original_types: bool=True, #尝试将从gid检索到的数据转换为原始类型
# conversion_errors: str='coerce', #解析失败时的行为。raise:抛出异常,coerce:设置为NaN/NaT, ignore:返回input
# reload_data:bool=False, #用了这个,就发现,编辑单元格就是虚的,立马给你返回原来的样子。
# theme:str='light', #streamlit、light、dark、blue、fresh、material,请大家自行测试。
# key: typing.Any=None, #精简关键参数(懵)
基本和dataframe一样,区别则是这种情况下的表格是静态的:其全部内容直接布置在页面上
st.metric 和 st.json这里不做介绍了哈。