如何在Streamlit中为表格单元格添加下拉框(含AgGrid实现方案)
Streamlit表格添加下拉选择列的两种可行方案
原生Streamlit方案(无需额外库)
Streamlit 1.23+版本的st.data_editor支持自定义列配置,可直接给指定列添加下拉选择框,替代手动输入:
import streamlit as st import pandas as pd # 初始化示例数据 df = pd.DataFrame({ "Symbol": ["AAPL", "MSFT", "GOOGL"], "Long/Short": ["Long", "Short", "Long"], "Price": [150, 300, 120] }) # 配置列:给「Long/Short」列添加下拉选择框 edited_df = st.data_editor( df, column_config={ "Long/Short": st.column_config.SelectboxColumn( "Long/Short", options=["Long", "Short"], required=True, # 可选,设置为必填项 width="medium" ) }, use_container_width=True, num_rows="dynamic" # 可选,允许用户新增行 ) # 展示编辑后的结果 st.write("编辑后的数据:") st.dataframe(edited_df)
关键细节:
- 用
st.column_config.SelectboxColumn绑定目标列,通过options参数设置下拉选项 required=True可强制用户必须选择选项,避免空值num_rows="dynamic"开启后,新增行的「Long/Short」列也会自动带上下拉框
AgGrid方案(需安装streamlit-aggrid库)
如果习惯使用AgGrid组件,可通过配置列编辑器实现下拉选择:
先安装依赖:
pip install streamlit-aggrid
代码示例:
import streamlit as st import pandas as pd from st_aggrid import AgGrid, GridOptionsBuilder # 初始化示例数据 df = pd.DataFrame({ "Symbol": ["AAPL", "MSFT", "GOOGL"], "Long/Short": ["Long", "Short", "Long"], "Price": [150, 300, 120] }) # 构建Grid配置 gb = GridOptionsBuilder.from_dataframe(df) # 给「Long/Short」列设置下拉编辑器 gb.configure_column( "Long/Short", editable=True, cellEditor="agSelectCellEditor", cellEditorParams={ "values": ["Long", "Short"] } ) # 生成Grid选项 grid_options = gb.build() # 渲染AgGrid表格 grid_response = AgGrid( df, gridOptions=grid_options, editable=True, fit_columns_on_grid_load=True, use_container_width=True ) # 获取编辑后的数据 edited_df = grid_response["data"] st.write("编辑后的数据:") st.dataframe(edited_df)
关键细节:
cellEditor="agSelectCellEditor"指定使用下拉选择编辑器cellEditorParams中的values参数定义下拉选项列表- 必须开启
editable=True才能让单元格支持编辑操作
内容的提问来源于stack exchange,提问作者Charles
相关产品推荐
相关产品推荐

