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

Streamlit中动态指定DataFrame显示列失效问题咨询

Streamlit中动态指定DataFrame显示列失效问题咨询

我正在尝试在streamlit的DataFrame里动态选择要显示的列,下面是我的代码:

#! /usr/bin/env python3
import streamlit as st
import pandas as pd

st.set_page_config(layout="wide")

# 创建包含Col1、Col2、Col3三列的示例DataFrame
df = pd.DataFrame({
    'Col1': ['A', 'B', 'C'],
    'Col2': ['X', 'Y', 'Z'],
    'Col3': [1, 2, 3]
})

# 创建下拉框,在Col1和Col2中选择一列
col = st.selectbox('Select a column', ['Col1', 'Col2'])

# 显示包含选中列和Col3的DataFrame
st.dataframe(df, column_order=[col, 'Col3'], use_container_width=True)

现在遇到的问题是,不管我选择哪个选项,界面总是只显示Col1和Col3。我自己猜想,会不会是column_order参数在第一次渲染DataFrame的时候就被固定住了?但这是Streamlit的预期行为吗?

另外,我试了下面这段动态禁用下拉框的代码,它就能正常工作,和官方示例的效果一致:

disable = st.checkbox('Disable the dropdown')
sel = st.selectbox('Select a column', ['Col1', 'Col2'], key='sel', disabled=disable)

为什么column_order的表现会不一样呢?我甚至还尝试用元组来传递参数,看看是不是Python可变对象的问题,但结果还是一样:

st.dataframe(df, column_order=(col, 'Col3'), use_container_width=True)

我是不是哪里考虑漏了?

备注:内容来源于stack exchange,提问作者Krishna

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.14 10:08:04