#python #pandas #dataframe #multi-select #streamlit
Вопрос:
Параметры для второго множественного выбора будут изменены в соответствии со значениями в уже существующей структуре данных.
import pandas as pd
import streamlit as st
df = pd.DataFrame({"A":[4,6,6],
"B":[4,6,9],
"C":[1,2,3],
})
interactive = st.beta_container()
col1, col2 = st.beta_columns(2)
with interactive:
all_columns_names= df.columns.tolist()
with col1:
option1 = st.multiselect("select column to plot",all_columns_names)
with col2:
option2 = st.multiselect("select required value/s to
plot",list(set(df.loc[(df.iloc[:,0].isin(option1))][df.columns[1]])))
пример:
if option1 = B
then option2 = [4,6,9]
if option1 = [A,C]
then option2 = [4,6,6,1,2,3]
Где ошибка в заявлении в col1
? Как я могу получить значения option2
, которые связаны с выбранным option1
?
Комментарии:
1. @KristianCanler так лучше ?
2. Если вы получаете код ошибки, пожалуйста, укажите и это. Кроме того, сейчас код выглядит минимальным/воспроизводимым, но для ясности в вопросе может потребоваться немного больше объяснений.
3. @user5980666 Скажи , если
option1
A
да, то в чем логикаoption2
?4.@Ynjxsjmh, если опция 1 является опцией 2, должна включать [4,6,6 ]
Ответ №1:
Вы можете получить значения столбцов, выполнив итерацию по каждому столбцу и добавив их в контейнер.
with interactive:
with col2:
vals = set()
if not isinstance(option1, list):
option1 = [option1]
for col in option1:
vals.update(df[col].values.tolist())
option2 = st.multiselect("select required value/s to plot", list(vals))