从两个下拉菜单中选择后显示输出

2024-03-29 00:27:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我是PythonStreamlight软件包的新手,我已经创建了两个下拉菜单。一个下拉菜单选择医院名称,另一个选择文档源。下面是我的数据的样子

import pandas as pd

df = pd.DataFrame({'Hospital': ['Nick hospital', 'Nick hospital', 'Nick hospital',
                                'Krish hospital', 'Krish hospital', 'Krish hospital'],
                   'document_source': ['NAR', 'PAR', 'Free Text', 'NAR', 'PAR', 'Free Text'],
                   'document_count': [1200, 150, 3, 2500, 342, 300]})
df.head()

现在我想在选择医院和文档源之后显示文档计数

import streamlit as st
#create sidebar
st.sidebar.title("Filter data")

temp = df.to_dict('list')
temp['Hospital'] = list(set(temp['Hospital']))
temp['document_source'] = list(set(temp['document_source']))
temp_records = df.to_dict('records')

#Checkbox for Hospitals
hosp_list = st.sidebar.selectbox("Select Hospital", temp['Hospital'])


#Chech box for Documents
doc_source = st.sidebar.selectbox("Select Document source", temp['document_source'])

st.subheader('Document Count')

预期输出是显示所选医院的文档计数。因此,如果我选择一家医院并选择文档源,我应该以粗体蓝色获得该文档的文档计数。外面有人能帮忙吗


Tags: 文档sourcedfdocumenttempnicklist计数
1条回答
网友
1楼 · 发布于 2024-03-29 00:27:38

看起来您希望使用DataFrame条件对数据执行boolean indexing

以下是一个工作版本,它根据您的数据集输出您要查找的内容:

st.subheader('Document Count')

# Create two conditions
hospital_condition = df['Hospital'] == hosp_list
doc_source_condition = df['document_source'] == doc_source

# Select all rows that meet those conditions.
# There should be exactly one!
rows = df[hospital_condition & doc_source_condition]

if len(rows) == 1:
    st.write(rows["document_count"][0])
else:
    # Sanity check. This shouldn't be possible!
    st.error("Matched an unexpected number of rows!")
    st.write(rows)

相关问题 更多 >