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

如何为Streamlit不同页面分配对应DataFrame?

解决方案

要实现每个系统的Selections/Results页面对应展示各自的DataFrame,你需要先将上传文件中的数据分配到对应系统的页面,再根据用户的选择调取展示。以下是修改后的代码:

import streamlit as st
import pandas as pd

# 初始化存储各系统数据的嵌套字典
system_data = {
    'System 1': {'Selections': None, 'Results': None},
    'System 2': {'Selections': None, 'Results': None},
    'System 3': {'Selections': None, 'Results': None}
}

uploaded_file = st.file_uploader('Upload your File Here')

if uploaded_file is not None:
    # 这里假设上传的是Excel文件,每个sheet对应"System X_Selections"或"System X_Results"格式
    # 可根据实际文件结构调整读取逻辑
    xls = pd.ExcelFile(uploaded_file)
    for sheet_name in xls.sheet_names:
        # 拆分sheet名称匹配系统和页面类型
        system_part, page_part = sheet_name.split('_')
        if system_part in system_data and page_part in system_data[system_part]:
            system_data[system_part][page_part] = pd.read_excel(xls, sheet_name)
    st.success("文件数据加载完成!")

st.title("Choose Your System")

selected_section = st.sidebar.selectbox("Choose Your System:", sorted(system_data.keys()))
selected_page = st.sidebar.radio("Choose Selection or Results:", sorted(system_data[selected_section].keys()))

# 修正按钮参数:st.button仅支持单个标签文本
if st.button(f"Show {selected_page}"):
    target_df = system_data[selected_section][selected_page]
    if target_df is not None:
        st.write(f"展示 {selected_section}:{selected_page} 数据")
        st.dataframe(target_df)
    else:
        st.warning(f"{selected_section}的{selected_page}数据未加载,请先上传正确格式的文件!")

关键修改说明:

  • 新增嵌套字典system_data,专门存储每个系统下Selections和Results对应的DataFrame
  • 补充上传文件处理逻辑:读取文件后将数据匹配分配到对应系统的页面(示例用Excel sheet命名匹配,可根据实际数据结构调整,比如CSV按列区分等)
  • 修正st.button参数错误:原代码传入两个标签无效,改为根据当前选择动态生成按钮文本
  • 点击按钮后,根据用户选择从system_data中调取对应DataFrame展示,同时处理数据未加载的提示场景

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 10:19:59