Streamlit(四) - st.dataframe

将数据框显示为交互式表格。

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))

Streamlit(四) - st.dataframe_第1张图片

 默认的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()

Streamlit(四) - st.dataframe_第2张图片

 

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,      #精简关键参数(懵)

Streamlit(四) - st.dataframe_第3张图片

 修改主题

Streamlit(四) - st.dataframe_第4张图片

Streamlit(四) - st.dataframe_第5张图片 

 st.table

基本和dataframe一样,区别则是这种情况下的表格是静态的:其全部内容直接布置在页面上

st.metric 和 st.json这里不做介绍了哈。

你可能感兴趣的:(python,streamlit,python,web)