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

Streamlit multiselect未选内容时无法显示全量数据的解决方法

解决Streamlit Multiselect未选择时无数据的问题

问题出在当前的过滤逻辑上:当options和options2都为空列表时,query语句中的CODE in @options or TYPE in @options2会返回False,导致没有任何数据被筛选出来。

你可以通过以下两种方式修改代码实现需求:

方式一:直接修改查询条件

通过在查询语句中添加“两个多选框都未选择时返回全部数据”的逻辑:

code_= df_temp.CODE.unique().tolist()
type_ = df_temp.TYPE.unique().tolist()

options_col, options2_col  = st.columns([0.1, 0.1])
  
options = options_col.multiselect('Select Code', code_ )
options2 = options2_col.multiselect('Select Type', type_ )

# 都未选择时返回全部数据,否则执行原过滤逻辑
df_filtered = time_filtered.query('(@options == [] and @options2 == []) or (CODE in @options or TYPE in @options2)')

方式二:使用条件判断拆分逻辑

通过Python的条件判断直接控制返回结果,逻辑更直观:

code_= df_temp.CODE.unique().tolist()
type_ = df_temp.TYPE.unique().tolist()

options_col, options2_col  = st.columns([0.1, 0.1])
  
options = options_col.multiselect('Select Code', code_ )
options2 = options2_col.multiselect('Select Type', type_ )

if not options and not options2:
    # 无选择时直接返回原始数据
    df_filtered = time_filtered
else:
    # 有选择时执行原过滤逻辑
    df_filtered = time_filtered.query('CODE in @options or TYPE in @options2')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 20:57:28