基于streamlit的表格展示-完美解决方案

问题

用streamlit开发web app非常实用。但是streamlit的表格展示非常不友好,只有两个简单的接口函数:st.table(df)和st.dataframe(df)。

对于字段稍微比较多的dataframe显示效果相当不友好。

st.table(df)会展开所有字段,st.dataframe(df)会压缩到一起,字段名称看不清楚。

主要局限为:

1. 不能控制每个列的宽度。虽然接口里有width和height两个参数,但是亲测不太管用。

2. 行数多的时候,会一直在页面上往下排列。

以下是几个对比:

可以看到如果混杂着中英文或者数字,中文会变成一个字一行。

好处是有左右和上下的滚动条,看上去很整齐。但是不足之处是长的字段的列名和内容都被缩略了。

解决

使用streamlit-aggrid的第三方安装包,可以完美解决如上问题。

pip install streamlit-aggrid

先看效果:

 aggrid的方式完美地解决问题。无缩略,列宽设置合理,可以左右、上下滑动。

代码

from st_aggrid import AgGrid, DataReturnMode, GridUpdateMode, GridOptionsBuilder
options_builder = GridOptionsBuilder.from_dataframe(df)
options_builder.configure_default_column(groupable=True, value=True, enableRowGroup=True, aggFunc='sum', editable=True, wrapText=True, autoHeight=True)
options_builder.configure_column('col1',  pinned='left')
options_builder.configure_column('col2',  pinned='left')
grid_options = options_builder.build()
grid_return = AgGrid(df, grid_options, theme='blue')

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值