Отображать вывод после выбора из двух выпадающих меню - PullRequest
0 голосов
/ 18 апреля 2020

Я новичок в python streamlit пакете, и у меня есть данные, которые я создал 2 выпадающих меню. В одном раскрывающемся меню выбирается название больницы, а в другом - источник документа. Вот как мои данные выглядят так:

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')

Ожидаемый результат чтобы показать количество документов для выбранной больницы. поэтому, если я выберу больницу и выберу источник документа, я получу количество документов этого документа жирным синим цветом. может кто-нибудь там помочь, пожалуйста

1 Ответ

0 голосов
/ 23 апреля 2020

Похоже, вы хотите использовать условия DataFrame для логического индексирования в ваших данных.

Вот рабочая версия, которая выводит то, что вы ищете, на основе вашего набора данных :

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)
...