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

如何在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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 08:57:01