如何在Streamlit中修正Pandas DataFrame列名多余字符问题
问题原因
你遇到的列名带多余括号、引号和逗号的问题,是因为multiselect返回的col本身就是列表类型,但你在创建新DataFrame时给columns参数套了一层额外的[],把列表又包成了二维列表,导致Pandas把整个列表当成单个列名,所以显示出这些多余符号。
修正方案
有两种简洁的修正方式:
方式一:直接截取原DataFrame的列(推荐)
不需要先转成values再重构DataFrame,直接从原df中选取列即可,代码更高效:
import pandas as pd import streamlit as st df = pd.read_csv('data/AUDCAD_1h.csv') st.sidebar.header('Data Filter') col = st.sidebar.multiselect("Select any column", df.columns) if not col: data = df.copy() else: # 直接选取指定列,无需转values再重构 data = df[col].copy() st.write(data)
方式二:修复columns参数的写法
如果你一定要保留转values的逻辑,只需要把columns=[col]改成columns=col,因为col已经是列表了:
import pandas as pd import streamlit as st df = pd.read_csv('data/AUDCAD_1h.csv') st.sidebar.header('Data Filter') col = st.sidebar.multiselect("Select any column", df.columns) if not col: data = df.copy() else: data = df[col].values # 去掉col外层的[],直接用col作为columns参数 data = pd.DataFrame(data, columns=col) st.write(data)
内容的提问来源于stack exchange,提问作者dbmtbm
相关产品推荐
相关产品推荐

