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

如何为Streamlit data_editor添加动态标签列?

实现Streamlit Data Editor的动态标签列

当然可行,你可以通过自定义Streamlit Data Editor的列配置,将st_tags组件嵌入到指定列中,实现每行可单独增删标签的效果。

修改后的完整代码

import streamlit as st
import pandas as pd
from streamlit_tags import st_tags

# 初始化原始数据,添加空的keywords列
df = pd.DataFrame(
    [
       {"command": "st.selectbox", "rating": 4, "is_widget": True, "keywords": []},
       {"command": "st.balloons", "rating": 5, "is_widget": False, "keywords": []},
       {"command": "st.time_input", "rating": 3, "is_widget": True, "keywords": []},
   ]
)

# 自定义标签列的编辑器,row_index用于生成唯一组件key
def tag_editor(cell_value, row_index):
    return st_tags(
        label="",
        text="按回车添加标签",
        value=cell_value,
        suggestions=['five', 'six', 'seven', 'eight', 'nine', 'three', 'eleven', 'ten', 'four'],
        maxtags=4,
        key=f"tag_{row_index}"
    )

# 配置Data Editor的列
edited_df = st.data_editor(
    df,
    column_config={
        "keywords": st.column_config.Column(
            "关键词",
            editor=tag_editor,
            width="medium"
        )
    },
    use_container_width=True
)

# 查看编辑后的结果
st.subheader("编辑后的数据")
st.dataframe(edited_df)

关键说明

  1. 初始化标签列:先给原始DataFrame新增一个keywords列,初始值设为空列表,作为标签存储的载体
  2. 自定义标签编辑器:定义tag_editor函数,将st_tags组件包装成Data Editor支持的编辑器。利用row_index参数为每行的标签组件生成唯一key,避免Streamlit组件的key冲突问题
  3. 配置Data Editor列:在column_config中指定keywords列使用自定义的tag_editor,同时设置列名和显示宽度

实现后效果如下:
预期效果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 01:21:03