使用session_state更新streamlit中的metric值



我有一个流光应用程序,在那里我加载一个数据框架,能够根据用户输入过滤和返回数据。我有一个函数,使用df.shape[0]返回返回记录的数量。

我想要的是改变显示的记录数基于用户过滤器返回的结果。所以我确实使用了st.session_state,但似乎我滥用了。

<标题>代码:
def metric_employee(df):

if "df" in st.session_state:
return df['status_type'].value_counts()["employee"]
st.session_state.df=pd.DataFrame(df,columns= df.columns)
return st.session_state.df
result = df    
col1_m,col2_m,col3_m = st.columns(3)
#  use session state to display number corresponding to the result table!!!!!!!!
with col1_m:
st.markdown(
f'<p class = "employee_metric"> {metric_employee(result)} employee</p>',
unsafe_allow_html= True,
)
if radioDB=="Search":  
regular_search_term=st.sidebar.text_input("Enter Search Term")
if st.sidebar.button("search",key=1):    
result = df[df['name'].str.contains(regular_search_term)|
df['nickname'].str.contains(regular_search_term)|
df['mother_name'].str.contains(regular_search_term)]
st.write(f"{str(result.shape[0])} Records ")
display_aggrid(result)

st.write (f" {str (result.shape[0])}记录")

上面的语句显示返回的总结果在我的度量中,我想要的是显示列status_type中单元格值为employee的记录数,并且我想在每次用户过滤数据框时更改此数字。

那么我的错误是什么,以及如何根据返回的结果更改数字?

用这个

def metric_employee(df):
"""
Returns the number of records on column status_type with
employee value from the given df.
"""
dfe = df.loc[df['status_type'] == 'employee']
return len(dfe)

相关内容

  • 没有找到相关文章

最新更新