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
相关产品推荐
相关产品推荐

