Pass Filtered Dataframe Through Three Dropdown levels

I’ve started working with streamlit & python very recently, this could be a very basic question and not sure if I can post it here or should use StackExchange for help. But any help or direction is appreciated.

Trying to filter dataframes to show different views. It involves selecting values from three dropdown values and one view without selecting any.

Each filter shows visualization for the filtered dataframe

Sample Code:


def select_1(source_df: pd.DataFrame) -> pd.DataFrame:
    selected_mgr = st.multiselect(
        "Select Manager Name for further exploration below",
        source_df["manager"].unique(),
    )
    selected_1_df = source_df[(source_df["manager"].isin(selected_mgr))]
    if selected_mgr:
        st.write('You have selected', selected_mgr)
    return selected_1_df


def select_2(selected_1_df: pd.DataFrame) -> pd.DataFrame:
    selected_emp = st.multiselect(
        "Select Consultant Name for further exploration below",
        selected_1_df["employee"].unique(),
    )
    selected_2_df = selected_1_df[(selected_1_df["employee"].isin(selected_emp))]
    if selected_emp:
        st.write('You have selected', selected_emp)
    return selected_2_df


def select_3(selected_2_df) -> pd.DataFrame:
    selected_month = st.multiselect(
        "Select one or more Months for further exploration below",
        selected_2_df["month"].unique(),
    )
    selected_3_df = selected_2_df[(selected_2_df["month"].isin(selected_month))]
    if selected_month:
        st.write('you have selected', selected_month)
    return selected_3_df


    source_df = df

    ## Calling functions for st.multiselect
    selected_1_df = select_1(source_df)
    selected_2_df = select_2(selected_1_df )
    selected_3_df = select_3(selected_2_df ) 

   if not selected_1_df.empty:
     do some stuff(selected_1_df)
   elif not selected_2_df.empty:
     do some stuff (selected_2_df)
   elif not selected_3_df.empty
     do some stuff (selected_3_df)
   else:
     do some stuff(source_df)

The problem I’m facing is, I’m unable to pass the first filtered dataframe to the next. Different approach or a solution to this also would help.