You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Streamlit展示的DataFrame/表格中实现动态列选择?

在Streamlit表格内实现内嵌列选择功能

原生的st.dataframe和st.write自带的表格组件没有直接支持内嵌列选择的功能,不过可以借助第三方组件streamlit-aggrid来实现这个需求,它能让你在表格内直接点击列头选择列,并返回选中的列名。

具体实现步骤:

  1. 先安装依赖包
pip install streamlit-aggrid
  1. 编写示例代码
import streamlit as st
from st_aggrid import AgGrid, GridOptionsBuilder
import pandas as pd

# 生成测试数据
df = pd.DataFrame({
    "姓名": ["张三", "李四", "王五"],
    "年龄": [25, 30, 28],
    "城市": ["北京", "上海", "广州"],
    "薪资": [15000, 20000, 18000]
})

# 配置表格选项
gb = GridOptionsBuilder.from_dataframe(df)
# 启用列多选模式,也可设为"single"开启单选
gb.configure_selection('multiple', use_checkbox=False, column_selectable="multi")
gb.configure_grid_options(domLayout='normal')
grid_options = gb.build()

# 渲染带列选择功能的表格
grid_response = AgGrid(
    df,
    gridOptions=grid_options,
    enable_enterprise_modules=True,
    update_mode="MODEL_CHANGED",
    allow_unsafe_jscode=True
)

# 提取选中的列名
selected_columns = []
if grid_response["column_state"]:
    for col in grid_response["column_state"]:
        if col["selected"]:
            selected_columns.append(col["colId"])

# 展示选中结果
st.subheader("选中的列名")
st.write(selected_columns)

代码说明:

  • 通过GridOptionsBuilder配置列选择规则,column_selectable="multi"开启列多选,"single"则为单选
  • 从grid_response["column_state"]中读取列的选中状态,筛选出标记为选中的列名
  • 点击表格列头即可完成选择,选中结果会实时返回并展示

如果不想依赖第三方组件,也可以用HTML自定义表格结合st.components.v1.html实现,但需要自行编写JS逻辑监听列头点击,复杂度较高,不如streamlit-aggrid便捷。

内容的提问来源于stack exchange,提问作者AP J

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 10:42:06