python - 用户从python的下拉列表中选择值后如何显示过滤后的数据框和streamlit?
问题描述
如何在用户从streamlit中的选择框中选择值后显示过滤后的数据框,每次用户更改值时,页面都会刷新并显示整个数据框。
我想要的是显示过滤后的数据框。
我试图初始化一个空数据框,但是一旦页面刷新它就会显示以下错误:
IndexError: list index out of range
Traceback:
File "F:\AIenv\lib\site-packages\streamlit\script_runner.py", line 349, in _run_script
exec(code, module.__dict__)
File "f:\AIenv\streamlit\app.py", line 553, in <module>
main()
File "f:\AIenv\streamlit\app.py", line 543, in main
st.session_state["df_result_search"].columns.tolist()[0]
代码:
import streamlit as st
import pandas as pd
def update_df(new_df):
return pd.DataFrame(new_df)
def main():
# df_result_search = pd.DataFrame()
# st.session_state.df_result_search = df_result_search
df =pd.DataFrame({
"source_number":
[11199,11328,11287,32345,12342,1232,13456,123244,13456],
"location":
["loc2","loc1-loc3","loc3","loc1","loc2-loc1","loc2","loc3-loc2","loc2","loc1"],
"category":
["cat1","cat2","cat1","cat3","cat3","cat3","cat2","cat3","cat2"],
})
df_result_search = df
st.write(st.session_state)
with st.form(key='Search_form'):
all_columns = df.columns.tolist()
search_term=st.text_input("Enter Search Term")
if 'search_term' not in st.session_state:
st.session_state.search_term = search_term
if st.form_submit_button("search"):
# if len(search_term)>0:
df_result_search = df[df.isin([search_term]).any(axis=1)]
st.session_state.search_term = search_term
if 'df_result_search' not in st.session_state:
st.write("Session Out")
else:
st.write("Session IN")
st.session_state.df_result_search = df_result_search
st.dataframe(st.session_state["df_result_search"])
df_len = range(len(df_result_search.index))
index = df_result_search.columns.tolist().index(
st.session_state["df_result_search"].columns.tolist()[0]
)
st.write("index :{}".format(index))
df_len = range(len(df_result_search.index))
s = st.selectbox('Select index',key="select_box",options=df_len,index = index,on_change=lambda: update_df(df_result_search))
print(st.session_state.select_box)
st.write("values is {}".format(st.session_state.select_box))
if __name__ == '__main__':
main()
解决方案
推荐阅读
- artifactory - 停止工件 api 分页
- c# - 如何使用 Web API 使 DbContext 保持连接状态
- kotlin - 如何解析在 ktor 中发布的原始 json 数据列表
- swift - 打印时如何将数组拆分为指定的行?
- node.js - Multer 不能在 http 对象之外工作
- c# - IEnumerable 自身的异常
- angular - 为什么运行 yarn start 时出现语法错误
- android - JobIntentService onHandleWork 无法正常工作
- postgresql - Postgres:如何检测查询中的空间不足情况?
- jenkins - 未知的条件 beforeAgent。有效条件为:allOf、anyOf、branch、buildingTag、changeRequest、changelog、changeset、environment、equals