为什么我不能使用 streamlit 库将 csv 文件中的列添加到 dataframe.query()?

Why can I not add a column in csv file to dataframe.query() with streamlit library?

我是 python 的新手,以前使用过 php,但我正在 python 中构建一个简单的仪表板,主要使用 pandas 和 streamlit 只是为了更熟悉这门语言,但我对一些感觉如此简单的东西很着迷。使用 streamlit 过滤器创建的 Web 应用程序在“路由”和“产品组”上非常好,但是一旦我添加变量“用户”查看我的数据馈送中的“存储用户”列,我就会遇到回溯错误。我假设这是因为“商店”和“用户”之间的 space,但是我从中提取的数据源在列中有 space,但我无法找到关于处理包含 space.

的列名的任何文档

如有任何见解,我们将不胜感激!

这是我导入的库-

import pandas as pd 
import plotly.express as px 
import streamlit as st 
import plotly.graph_objs as go

这是我目前创建的边栏

st.sidebar.header("Please Filter Here:")
route = st.sidebar.multiselect(
    "Filter by Route:",
    options=df["route"].unique(),
    default=df["route"].unique()
)


productgroup = st.sidebar.multiselect(
    "Filter by Product Group:",
    options=df["productgroup"].unique(),
    default=df["productgroup"].unique()
)

user = st.sidebar.multiselect(
    "Filter by Store:",
    options=df["store user"].unique(),
    default=df["store user"].unique()
)

df_selection = df.query(
    "(route == @route) and (productgroup == @productgroup) and (user == @store user)" 
    ) 

st.dataframe(df_selection)

带有space的列名必须在反引号内。参见 pandas ref.

使用以下内容。

(`store user` == @user)"

或者可以

(@user == `store user`)"

store user 是列名,而 user 是变量。它是必须以 @.

开头的变量