根据答案of this post,我能够在应用所需过滤器后显示数据帧
我有一个Streamlight代码,可以显示多个下拉列表
我想要的是,如果用户选择cat3,并且cat3没有loc2 我希望在第三个下拉列表中根据数据帧的记录只显示loc1和loc3
import numpy as np
import pandas as pd
import streamlit as st
df =pd.DataFrame({
"source_number":
[11199,11328,11287,32345,12342,1232,13456,123244,13456],
"location":
["loc2","loc1","loc3","loc1","loc2","loc2","loc3","loc2","loc1"],
"category":
["cat1","cat2","cat1","cat3","cat3","cat3","cat2","cat3","cat2"],
})
is_check = st.checkbox("Display Data")
if is_check:
st.table(df)
columns = st.sidebar.multiselect("Enter the variables", df.columns)
sidebars = {}
for y in columns:
ucolumns=list(df[y].unique())
print (ucolumns)
sidebars[y]=st.sidebar.multiselect('Filter '+y, ucolumns)
if bool(sidebars):
L = [df[k].isin(v) if isinstance(v, list)
else df[k].eq(v)
for k, v in sidebars.items() if k in df.columns]
df1 = df[np.logical_and.reduce(L)]
st.table(df1)
目前没有回答
相关问题 更多 >
编程相关推荐