CAI3 / app.py
nestole's picture
Update app.py
ba1f883 verified
Raw
History Blame Contribute Delete
94.1 kB
# Code Skript fΓΌr Mein Profil
#------------------------------------------------------------------------
# Datei local laufen lassen via:
# streamlit run novap1/adaptive_module_part1_streamlit0904.py
# BenΓΆtigte Pakete -----------------------------------------------------
import streamlit as st
import pandas as pd
import numpy as np
from adaptive_modul_part1_functions import certainty, split_and_match,contains_value
from sheets_helper import save_all, df_to_str
#------------------------------------------------------------------------
params = st.query_params # dictionary-like object
user_id = params.get("id", "NOID")
########################################################################
###################### Load and Prepare Data ###########################
########################################################################
# If the data is stored in the format achieved via these steps in the future,
# this part can be left out.
#
# NOTE: this used to run top-level, meaning Streamlit re-executed all of it
# (including re-reading the 14MB finaldata1903.csv from disk) on EVERY
# widget interaction. Wrapping it in @st.cache_data means it only runs
# once per app "version" (until the underlying files change), and every
# rerun after that just reuses the cached result instantly.
@st.cache_data
def load_data():
# set random seed for random elements that should stay identical for an
# individual (replace 42 with ID). Seeding inside the cached function
# keeps the tiebreaker values identical to the original behavior.
np.random.seed(42)
# load data 1-4
#data = pd.read_csv("Codierung_Angebote_Intervention.csv", sep=";",
#nrows=4) # read csv
data = pd.read_csv(
"Intervention_Paper3.csv", sep=";" # replace with the sheet name
) # read excel
exclude = [f"E{i}" for i in range(11, 27)] # E11 ... E26
data = data[~data['ID'].isin(exclude)]
# Variable fΓΌr Angebotsfilter
data["pointsfil"] = 0
data["pointsfillist"] = ""
# Add a random column to break ties
data['random_tiebreaker'] = np.random.rand(len(data))
# recode special values
data.replace(99, "Nan", inplace=True) # 99 = not applicable, changed to string
data.replace(55, "ata", inplace=True) # 55 = applicable to all, changed to string
# datastuds is only ever used for two dropdown option lists
# (fachgruppe, studienort), so only load those columns instead of the
# full 14MB file.
datastuds = pd.read_csv("finaldata1903.csv", usecols=["fachgruppe", "studienort"])
# read m5
dataM5 = data.copy()
# Add a random column to break ties
dataM5['random_tiebreaker'] = np.random.rand(len(dataM5))
# Variable fΓΌr Angebotsfilter
dataM5["pointsfil"] = 0
dataM5["pointsfillist"] = ""
# Variable fΓΌr Bedarfe und Sortierung Bedarfe
dataM5["pointsfilB"] = 0
dataM5["pointsfilBlist"] = ""
dataM5["pointsfilBSORT"] = 0
dataM5["pointsfilBSORTlist"] = ""
dataM5["pointsfilBS"] = 0
dataM5["pointsfilBSSORTlist"] = ""
# recode special values
dataM5.replace(99, "Nan", inplace=True)
dataM5.replace(55, "ata", inplace=True)
return data, datastuds, dataM5
data, datastuds, dataM5 = load_data()
# Front Beginning of Streamlit UI
########################################################################
############################# Streamlit ################################
########################################################################
# The code below shows the logic behind the question and answering patterns.
# Start--------------------------------------------
st.title("BWusste Studienwahl")
#st.write("Stand: 01.07.25")
st.write("Hallo und herzlich willkommen. Auf dieser Webseite kannst du, wenn du auf die KΓ€sten clickst (β€žFrageblock 1: Bildungswegβ€œ) angeben, wie sehr du dich gerade mit einem Thema, welches mit deiner Studienwahl zusammenhΓ€ngt, auseinandersetzen mΓΆchtest.")
labels = {
1: "1 - Trifft ΓΌberhaupt nicht zu",
2: "2",
3: "3",
4: "4",
5: "5",
6: "6",
7: "7 - Trifft voll und ganz zu"
}
# Frageblock 1 ##########################################################
#########################################################################
expander1 = st.expander("Frageblock 1: Bildungsweg")
#expander1.write("Überleg erstmal, was fΓΌr dich als nΓ€chster Schritt auf deinem Bildungsweg passen kΓΆnnte – egal ob Studium, Ausbildung, Duales Studium.")
expander1.write(
"Wie sicher bist du dir insgesamt, welchen Bildungsweg du einschlagen mΓΆchtest?")
answer1 = expander1.select_slider(
label=' ',
options=[1, 2, 3, 4, 5, 6, 7], key="q1", value=1,
format_func=lambda x: labels[x])
sec1 = certainty(answer1)
answer2=expander1.multiselect('Welche(n) Bildungsweg(e) kannst du dir vorstellen?', ["Ausbildung", "Duales Studium", "Studium"], default=None,
key="q2")
if answer2:
if "Duales Studium" in answer2:
answer2="Duales Studium"
else:
answer2="Studium"
#expander1.write(answer2)
skip1 = expander1.checkbox("Ich weiß es noch nicht", key="s1")
if skip1:
sec1 = 1
answer2 = "None"
if answer2==[]:
sec1=1
expander1.write("<span style='color:red'>⚠️ Bitte noch die Antwortfelder ausfüllen!</span>", unsafe_allow_html=True)
# Frageblock 2 ##########################################################
#########################################################################
expander2 = st.expander("Frageblock 2: Interessen")
expander2.write("Was begeistert dich? Was macht dir Spaß? ErzÀhl uns hier mehr über deine Interessen.")
macrofield = sorted(datastuds["fachgruppe"].dropna().unique().tolist())
answer3 = expander2.multiselect('In welchen Bereichen liegen deine Interessen? WΓ€hle einen oder mehrere Interessensbereiche aus oder beschreibe sie in deinen eigenen Worten.', macrofield, default=None,
key="q3")
answer5 ="n"
if len(answer5)<2:
answer5="1977"
answer4 = expander2.select_slider(
label="Wie sicher bist du dir schon darΓΌber, in welchen Bereichen deine Interessen liegen?",
options=[1, 2, 3, 4, 5, 6, 7], key="q4", value=1,
format_func=lambda x: labels[x])
sec2 = certainty(answer4)
skip2 = expander2.checkbox("Ich weiß es noch nicht", key="s2")
if skip2:
sec2 = 1
answer3 = ["None"]
answer5 = "None"
if answer3==[]:
sec2=1
expander2.write("<span style='color:red'>⚠️ Bitte noch die Antwortfelder ausfüllen!</span>", unsafe_allow_html=True)
# Frageblock 3 ##########################################################
#########################################################################
expander3 = st.expander("Frageblock 3: FΓ€higkeiten")
expander3.write("Was kannst du gut? Worin siehst du oder andere deine StΓ€rken? ErzΓ€hl uns hier mehr ΓΌber deine FΓ€higkeiten.")
macrofield = sorted(datastuds["fachgruppe"].dropna().unique().tolist())
answer7 = expander3.multiselect('In welchen Bereichen liegen deine FΓ€higkeiten? WΓ€hle einen oder mehrere FΓ€higkeitsbereiche aus oder beschreibe sie in deinen eigenen Worten.', macrofield,
default=None, key="q7")
answer9 = "n"
if len(answer9)<2:
answer9="1977"
answer8 = expander3.select_slider(
label="Wie sicher bist du dir schon darΓΌber, in welchen Bereichen deine FΓ€higkeiten liegen?",
options=[1, 2, 3, 4, 5, 6, 7], key="q8", value=1,
format_func=lambda x: labels[x])
sec4 = certainty(answer8)
skip3 = expander3.checkbox("Ich weiß es noch nicht", key="s3")
if skip3:
sec4 = 1
answer7 = ["None"]
answer9 = "None"
if answer7==[]:
sec4=1
expander3.write("<span style='color:red'>⚠️ Bitte noch die Antwortfelder ausfüllen!</span>", unsafe_allow_html=True)
# Frageblock 4 ##########################################################
#########################################################################
expander4 = st.expander("Frageblock 4: Region")
expander4.write("Home sweet home oder doch lieber Koffer packen? Jetzt geht es noch um die Frage, in welcher Region du deinen Bildungsweg fortfΓΌhren mΓΆchtest.")
answer11 = expander4.select_slider(
label=" Wie sicher bist du dir insgesamt, wo du deinen Bildungsweg fortfΓΌhren mΓΆchtest?",
options=[1, 2, 3, 4, 5, 6, 7], key="q11", value=1,
format_func=lambda x: labels[x])
sec6 = certainty(answer11)
ort = sorted(datastuds["studienort"].dropna().unique().tolist())
answer12 = expander4.multiselect('Weißt du schon, wo?', ort, default=None, key="q12")
skip4 = expander4.checkbox("Ich weiß es noch nicht", key="s4")
if skip4:
sec6 = 1
answer12 = ["None"]
#info4 = expander4.checkbox("Weitere Informationen", key="i4")
if answer12==[]:
sec6=1
expander4.write("<span style='color:red'>⚠️ Bitte noch die Antwortfelder ausfüllen!</span>", unsafe_allow_html=True)
# Angebots Filterung ###########################################################
################################################################################
filter=["online"]
# Nach Nutzereingabe wird hier im Hintergund die Erstellung der Angebotsausgabe erzeugt
################################################################################
# Ergebnissblock 1
################################################################################
#expanderres1 = st.expander("Empfehlung Bildungsweg")
if sec1==7:
datae1 = data.iloc[0:0].copy()
datae1old=pd.concat([datae1])
#expanderres1.write("Keine Empfehlung")
else:
# Fokus Filter
if answer2!=None:
if answer2=="Studium":
answer2list=[answer2, "ata"]
else:
answer2list=[answer2, "ata", "Studium", "Duales Studium"]
else:
answer2list=[answer2]
if sec1==5:
# Filter data
datae1 = data.loc[
contains_value(data['Type_Studium_Ausbildung'], "Fokus") &
split_and_match(data['Sicherheit_Studium_Ausbildung'], [str(sec1)]) &
split_and_match(data['Auswahl_Studium_Ausbildung'], answer2list)
].copy()
# Sorting R1
if answer2 != "Studium":
datae1["rank1"] = 5
datae1.loc[split_and_match(datae1['Auswahl_Studium_Ausbildung'], ["Nan"]), "rank1"] = 4
datae1.loc[split_and_match(datae1['Auswahl_Studium_Ausbildung'], ["Studium"]), "rank1"] = 3
datae1.loc[split_and_match(datae1['Auswahl_Studium_Ausbildung'], ["ata"]), "rank1"] = 2
datae1.loc[split_and_match(datae1['Auswahl_Studium_Ausbildung'], ["Duales Studium"]), "rank1"] = 1
else:
datae1["rank1"] = 4
datae1.loc[split_and_match(datae1['Auswahl_Studium_Ausbildung'], ["Nan"]), "rank1"] = 3
datae1.loc[split_and_match(datae1['Auswahl_Studium_Ausbildung'], ["ata"]), "rank1"] = 2
datae1.loc[split_and_match(datae1['Auswahl_Studium_Ausbildung'], ["Studium"]), "rank1"] = 1
if sec1==1:
datae1 = data.loc[contains_value(data['Type_Studium_Ausbildung'], "Fokus")&
split_and_match(data['Sicherheit_Studium_Ausbildung'], [str(sec1)])
].copy()
#Sorting R1
datae1["rank1"]=1
#EinbezugFilter---------------------------------------------------
#Interessen
#answer3.append("ata")
answer5list=[answer5]
if sec2 in [5,7] and sec4 in [5,7]:
answer3M=answer3+answer7
answer5listM=answer5list+[answer9]
datae1 = datae1.loc[split_and_match(datae1['Fachgruppe_Interessen'],answer3M+ ["Nan","ata"]) |
split_and_match(datae1['Studienbereich_Interessen'],answer5listM+ ["Nan","ata"])
].copy()
#Sorting R2
# General Ranking Case
datae1["rank2"] = 6
datae1.loc[
split_and_match(datae1['Fachgruppe_Interessen'], ["Nan"]) &
split_and_match(datae1['Studienbereich_Interessen'], ["Nan"]),
"rank2"
] = 5
datae1.loc[
split_and_match(datae1['Fachgruppe_Interessen'], ["ata"]) &
split_and_match(datae1['Studienbereich_Interessen'], ["ata"]),
"rank2"
] = 4
datae1.loc[
split_and_match(datae1['Fachgruppe_Interessen'], answer3M) &
~split_and_match(datae1['Studienbereich_Interessen'], answer5listM),
"rank2"
] = 3
datae1.loc[
~split_and_match(datae1['Fachgruppe_Interessen'], answer3M) &
split_and_match(datae1['Studienbereich_Interessen'], answer5listM),
"rank2"
] = 2
datae1.loc[
split_and_match(datae1['Fachgruppe_Interessen'], answer3M) &
split_and_match(datae1['Studienbereich_Interessen'], answer5listM),
"rank2"
] = 1
elif sec2 in [5, 7]:
answer3M = answer3
answer5listM = answer5list
datae1 = datae1.loc[
split_and_match(datae1['Fachgruppe_Interessen'], answer3M + ["Nan", "ata"]) |
split_and_match(datae1['Studienbereich_Interessen'], answer5listM + ["Nan", "ata"])
].copy()
datae1["rank2"] = 6
datae1.loc[
split_and_match(datae1['Fachgruppe_Interessen'], ["Nan"]) &
split_and_match(datae1['Studienbereich_Interessen'], ["Nan"]),
"rank2"
] = 5
datae1.loc[
split_and_match(datae1['Fachgruppe_Interessen'], ["ata"]) &
split_and_match(datae1['Studienbereich_Interessen'], ["ata"]),
"rank2"
] = 4
datae1.loc[
split_and_match(datae1['Fachgruppe_Interessen'], answer3M) &
~split_and_match(datae1['Studienbereich_Interessen'], answer5listM),
"rank2"
] = 3
datae1.loc[
~split_and_match(datae1['Fachgruppe_Interessen'], answer3M) &
split_and_match(datae1['Studienbereich_Interessen'], answer5listM),
"rank2"
] = 2
datae1.loc[
split_and_match(datae1['Fachgruppe_Interessen'], answer3M) &
split_and_match(datae1['Studienbereich_Interessen'], answer5listM),
"rank2"
] = 1
if sec2 == 1:
datae1["rank2"] = 6
datae1.loc[
split_and_match(datae1['Fachgruppe_Interessen'], ["ata"]) &
~split_and_match(datae1['Studienbereich_Interessen'], ["ata"]),
"rank2"
] = 5
datae1.loc[
split_and_match(datae1['Fachgruppe_Interessen'], answer3) &
~split_and_match(datae1['Studienbereich_Interessen'], answer5list),
"rank2"
] = 4
datae1.loc[
~split_and_match(datae1['Fachgruppe_Interessen'], answer3) &
split_and_match(datae1['Studienbereich_Interessen'], answer5list),
"rank2"
] = 3
datae1.loc[
split_and_match(datae1['Fachgruppe_Interessen'], answer3) &
split_and_match(datae1['Studienbereich_Interessen'], answer5list),
"rank2"
] = 2
datae1.loc[
split_and_match(datae1['Fachgruppe_Interessen'], ["Nan"]) &
split_and_match(datae1['Studienbereich_Interessen'], ["Nan"]),
"rank2"
] = 1
# FΓ€higkeiten
answer9list=[answer9]
if sec4 in [5,7] and sec2 in [5,7]:
answer7M=answer3+answer7
answer9listM=answer5list+[answer9]
datae1 = datae1.loc[split_and_match(datae1['Fachgruppe_FΓ€higkeiten'],answer7M+ ["Nan","ata"]) |
split_and_match(datae1['Studienbereich_FΓ€higkeiten'],answer9listM+ ["Nan","ata"])
].copy()
#Sorting R3
datae1["rank3"]=6
datae1.loc[split_and_match(datae1['Fachgruppe_FΓ€higkeiten'],["Nan"]) &
split_and_match(datae1['Studienbereich_FΓ€higkeiten'],["Nan"])
, "rank3"]=5
datae1.loc[split_and_match(datae1['Fachgruppe_FΓ€higkeiten'], ["ata"]) &
split_and_match(datae1['Studienbereich_FΓ€higkeiten'], ["ata"])
, "rank3"]=4
datae1.loc[split_and_match(datae1['Fachgruppe_FΓ€higkeiten'], answer7M) &
~split_and_match(datae1['Studienbereich_FΓ€higkeiten'], answer9listM)
, "rank3"]=3
datae1.loc[~split_and_match(datae1['Fachgruppe_FΓ€higkeiten'], answer7M) &
split_and_match(datae1['Studienbereich_FΓ€higkeiten'], answer9listM)
, "rank3"]=2
datae1.loc[split_and_match(datae1['Fachgruppe_FΓ€higkeiten'], answer7M) &
split_and_match(datae1['Studienbereich_FΓ€higkeiten'], answer9listM)
, "rank3"]=1
elif sec4 in [5,7]:
answer7M=answer7
answer9listM=answer9list
datae1 = datae1.loc[split_and_match(datae1['Fachgruppe_FΓ€higkeiten'], answer7M+ ["Nan","ata"]) |
split_and_match(datae1['Studienbereich_FΓ€higkeiten'], answer9listM+ ["Nan","ata"])
].copy()
#Sorting R3
datae1["rank3"]=6
datae1.loc[split_and_match(datae1['Fachgruppe_FΓ€higkeiten'], ["Nan"]) &
split_and_match(datae1['Studienbereich_FΓ€higkeiten'], ["Nan"])
, "rank3"]=5
datae1.loc[split_and_match(datae1['Fachgruppe_FΓ€higkeiten'], ["ata"]) &
split_and_match(datae1['Studienbereich_FΓ€higkeiten'], ["ata"])
, "rank3"]=4
datae1.loc[split_and_match(datae1['Fachgruppe_FΓ€higkeiten'], answer7M) &
~split_and_match(datae1['Studienbereich_FΓ€higkeiten'], answer9listM)
, "rank3"]=3
datae1.loc[~split_and_match(datae1['Fachgruppe_FΓ€higkeiten'], answer7M) &
split_and_match(datae1['Studienbereich_FΓ€higkeiten'], answer9listM)
, "rank3"]=2
datae1.loc[split_and_match(datae1['Fachgruppe_FΓ€higkeiten'], answer7M) &
split_and_match(datae1['Studienbereich_FΓ€higkeiten'], answer9listM)
, "rank3"]=1
if sec4==1:
# Sorting R3
datae1["rank3"]=6
datae1.loc[split_and_match(datae1['Fachgruppe_FΓ€higkeiten'], ["ata"]) &
~split_and_match(datae1['Studienbereich_FΓ€higkeiten'], ["ata"])
, "rank3"]=4
datae1.loc[split_and_match(datae1['Fachgruppe_FΓ€higkeiten'], answer7) &
~split_and_match(datae1['Studienbereich_FΓ€higkeiten'], answer9list)
, "rank3"]=4
datae1.loc[~split_and_match(datae1['Fachgruppe_FΓ€higkeiten'], answer7) &
split_and_match(datae1['Studienbereich_FΓ€higkeiten'], answer9list)
, "rank3"]=3
datae1.loc[split_and_match(datae1['Fachgruppe_FΓ€higkeiten'], answer7) &
split_and_match(datae1['Studienbereich_FΓ€higkeiten'], answer9list)
, "rank3"]=2
datae1.loc[split_and_match(datae1['Fachgruppe_FΓ€higkeiten'], ["Nan"]) &
split_and_match(datae1['Studienbereich_FΓ€higkeiten'], ["Nan"])
, "rank3"]=1
# Ort
if sec6 == 7:
datae1 = datae1.loc[split_and_match(datae1['Auswahl_Orte'], answer12 + ["Nan","ata"])
].copy()
datae1["rank4"]=4
datae1.loc[split_and_match(datae1['Auswahl_Orte'], ["Nan"])
, "rank4"]=3
datae1.loc[split_and_match(datae1['Auswahl_Orte'], ["ata"])
, "rank4"]=2
datae1.loc[split_and_match(datae1['Auswahl_Orte'], answer12)
, "rank4"]=1
if sec6 == 5:
datae1["rank4"]=4
datae1.loc[split_and_match(datae1['Auswahl_Orte'], ["Nan"])
, "rank4"]=3
datae1.loc[split_and_match(datae1['Auswahl_Orte'], ["ata"])
, "rank4"]=2
datae1.loc[split_and_match(datae1['Auswahl_Orte'], answer12)
, "rank4"]=1
if sec6==1:
datae1["rank4"]=4
datae1.loc[split_and_match(datae1['Auswahl_Orte'], ["ata"])
, "rank4"]=3
datae1.loc[split_and_match(datae1['Auswahl_Orte'], answer12)
, "rank4"]=2
datae1.loc[split_and_match(datae1['Auswahl_Orte'], ["Nan"])
, "rank4"]=1
# Data output
datae1old=pd.concat([datae1]).copy()
df_sorted = datae1.sort_values(by=["rank1","rank2","rank3","rank4",'random_tiebreaker'], ascending=True).copy()
#expanderres1.dataframe(df_sorted[["Link", "ID","Sicherheit_Studium_Ausbildung", "Type_Studium_Ausbildung","RegelmÀßigkeit_Angebot","Zeitaufwand_Angebot","rank1","rank2","rank3","rank4",'random_tiebreaker',"pointsfil","pointsfillist"]])
################################################################################
# Ergebnissblock 2
################################################################################
#expanderres2 = st.expander("Empfehlung Interessen")
if sec2==7:
datae2 = data.iloc[0:0].copy()
datae2old=pd.concat([datae2])
#expanderres2.write("Keine Empfehlung")
else:
# Fokus Filter
answer5list=[answer5]
if sec2==5:
datae2 = data.loc[contains_value(data['Type_Interessen'],"Fokus")&
split_and_match(data['Sicherheit_Interessen'],[str(sec2)]) &
(
split_and_match(data['Fachgruppe_Interessen'],answer3+["ata"]) |
split_and_match(data['Studienbereich_Interessen'], answer5list+["ata"])
)
].copy()
#Sorting R1
datae2["rank1"]=5
datae2.loc[split_and_match(datae2['Fachgruppe_Interessen'], ["ata"]) &
split_and_match(datae2['Studienbereich_Interessen'], ["ata"])
, "rank1"]=4
datae2.loc[split_and_match(datae2['Fachgruppe_Interessen'], answer3) &
~split_and_match(datae2['Studienbereich_Interessen'], answer5list)
, "rank1"]=3
datae2.loc[
~split_and_match(datae2['Fachgruppe_Interessen'], answer3) &
split_and_match(datae2['Studienbereich_Interessen'], answer5list)
, "rank1"]=2
datae2.loc[split_and_match(datae2['Fachgruppe_Interessen'], answer3) &
split_and_match(datae2['Studienbereich_Interessen'], answer5list)
, "rank1"]=1
if sec2==1:
datae2 = data.loc[contains_value(data['Type_Interessen'],"Fokus")&
split_and_match(data['Sicherheit_Interessen'], [str(sec2)])
].copy()
#Sorting R1
datae2["rank1"]=1
#EinbezugFilter-----------------------------------------------
# FΓ€higkeiten
answer9list=[answer9]
if sec4 in [5,7]:
#Sorting R2
datae2["rank2"]=6
datae2.loc[split_and_match(datae2['Fachgruppe_FΓ€higkeiten'], ["Nan"]) &
split_and_match(datae2['Studienbereich_FΓ€higkeiten'], ["Nan"])
, "rank2"]=5
datae2.loc[split_and_match(datae2['Fachgruppe_FΓ€higkeiten'], ["ata"]) &
split_and_match(datae2['Studienbereich_FΓ€higkeiten'], ["ata"])
, "rank2"]=4
datae2.loc[split_and_match(datae2['Fachgruppe_FΓ€higkeiten'], answer7) &
~split_and_match(datae2['Studienbereich_FΓ€higkeiten'], answer9list)
, "rank2"]=3
datae2.loc[~split_and_match(datae2['Fachgruppe_FΓ€higkeiten'], answer7) &
split_and_match(datae2['Studienbereich_FΓ€higkeiten'], answer9list)
, "rank2"]=2
datae2.loc[split_and_match(datae2['Fachgruppe_FΓ€higkeiten'], answer7) &
split_and_match(datae2['Studienbereich_FΓ€higkeiten'], answer9list)
, "rank2"]=1
if sec4==1:
# Sorting R2
datae2["rank2"]=6
datae2.loc[split_and_match(datae2['Fachgruppe_FΓ€higkeiten'], ["ata"]) &
split_and_match(datae2['Studienbereich_FΓ€higkeiten'], ["ata"])
, "rank2"]=5
datae2.loc[split_and_match(datae2['Fachgruppe_FΓ€higkeiten'], answer7) &
~split_and_match(datae2['Studienbereich_FΓ€higkeiten'], answer9list)
, "rank2"]=4
datae2.loc[~split_and_match(datae2['Fachgruppe_FΓ€higkeiten'], answer7) &
split_and_match(datae2['Studienbereich_FΓ€higkeiten'], answer9list)
, "rank2"]=3
datae2.loc[split_and_match(datae2['Fachgruppe_FΓ€higkeiten'], answer7) &
split_and_match(datae2['Studienbereich_FΓ€higkeiten'], answer9list)
, "rank2"]=2
datae2.loc[split_and_match(datae2['Fachgruppe_FΓ€higkeiten'], ["Nan"]) &
split_and_match(datae2['Studienbereich_FΓ€higkeiten'], ["Nan"])
, "rank2"]=1
# Studium
if answer2!=None:
if answer2=="Studium":
answer2list=[answer2]
else:
answer2list=[answer2, "Studium", "Duales Studium"]
else:
answer2list=[answer2]
if sec1 in [5,7]:
datae2 = datae2.loc[split_and_match(datae2['Auswahl_Studium_Ausbildung'], answer2list+ ["Nan","ata"])
].copy()
# Sorting R3
if answer2!="Studium":
datae2["rank3"]=5
datae2.loc[split_and_match(datae2['Auswahl_Studium_Ausbildung'], ["Nan"])
, "rank3"]=4
datae2.loc[split_and_match(datae2['Auswahl_Studium_Ausbildung'], ["Studium"])
, "rank3"]=3
datae2.loc[split_and_match(datae2['Auswahl_Studium_Ausbildung'], ["ata"])
, "rank3"]=2
datae2.loc[split_and_match(datae2['Auswahl_Studium_Ausbildung'], ["Duales Studium"])
, "rank3"]=1
else:
datae2["rank3"]=4
datae2.loc[split_and_match(datae2['Auswahl_Studium_Ausbildung'], ["Nan"])
, "rank3"]=3
datae2.loc[split_and_match(datae2['Auswahl_Studium_Ausbildung'], ["ata"])
, "rank3"]=2
datae2.loc[split_and_match(datae2['Auswahl_Studium_Ausbildung'], answer2list)
, "rank3"]=1
if sec1==1:
# Sorting R3
if answer2!="Studium":
datae2["rank3"]=5
datae2.loc[split_and_match(datae2['Auswahl_Studium_Ausbildung'], ["Studium"])
, "rank3"]=4
datae2.loc[split_and_match(datae2['Auswahl_Studium_Ausbildung'], ["ata"])
, "rank3"]=3
datae2.loc[split_and_match(datae2['Auswahl_Studium_Ausbildung'], ["Duales Studium"])
, "rank3"]=2
datae2.loc[split_and_match(datae2['Auswahl_Studium_Ausbildung'], ["Nan"])
, "rank3"]=1
else:
datae2["rank3"]=4
datae2.loc[split_and_match(datae2['Auswahl_Studium_Ausbildung'], ["ata"])
, "rank3"]=3
datae2.loc[split_and_match(datae2['Auswahl_Studium_Ausbildung'], answer2list)
, "rank3"]=2
datae2.loc[split_and_match(datae2['Auswahl_Studium_Ausbildung'], ["Nan"])
, "rank3"]=1
# Ort
if sec6 == 7:
datae2 = datae2.loc[split_and_match(datae2['Auswahl_Orte'], answer12 + ["Nan","ata"])
].copy()
datae2["rank4"]=4
datae2.loc[split_and_match(datae2['Auswahl_Orte'], ["Nan"])
, "rank4"]=3
datae2.loc[split_and_match(datae2['Auswahl_Orte'], ["ata"])
, "rank4"]=2
datae2.loc[split_and_match(datae2['Auswahl_Orte'], answer12)
, "rank4"]=1
if sec6 == 5:
datae2["rank4"]=4
datae2.loc[split_and_match(datae2['Auswahl_Orte'], ["Nan"])
, "rank4"]=3
datae2.loc[split_and_match(datae2['Auswahl_Orte'], ["ata"])
, "rank4"]=2
datae2.loc[split_and_match(datae2['Auswahl_Orte'], answer12)
, "rank4"]=1
if sec6==1:
datae2["rank4"]=4
datae2.loc[split_and_match(datae2['Auswahl_Orte'], ["ata"])
, "rank4"]=3
datae2.loc[split_and_match(datae2['Auswahl_Orte'], answer12)
, "rank4"]=2
datae2.loc[split_and_match(datae2['Auswahl_Orte'], ["Nan"])
, "rank4"]=1
# Data output
datae2old=pd.concat([datae2]).copy()
df_sorted = datae2.sort_values(by=["rank1","rank2","rank3","rank4",'random_tiebreaker'], ascending=True).copy()
#expanderres2.dataframe(df_sorted[["Link", "ID","Sicherheit_Interessen", "Fachgruppe_Interessen", "Type_Interessen","RegelmÀßigkeit_Angebot","Zeitaufwand_Angebot","rank1","rank2","rank3","rank4",'random_tiebreaker',"pointsfil","pointsfillist"]])
################################################################################
# Ergebnissblock 2S
################################################################################
#expanderres2S = st.expander("Empfehlung InteressenS")
if sec2 ==1:
dataes = data.iloc[0:0].copy()
dataesold=pd.concat([dataes])
#expanderres2S.write("Keine Empfehlung")
elif sec4==7 & sec2 ==7:
dataes = data.iloc[0:0].copy()
dataesold=pd.concat([dataes])
#expanderres2S.write("Keine Empfehlung")
elif sec4==7:
dataes = data.iloc[0:0].copy()
dataesold=pd.concat([dataes])
#expanderres2S.write("Keine Empfehlung")
else:
# Fokus Filter
answer5list=[answer5]
if sec2 in [5,7]:
dataes = data.loc[contains_value(data['Type_FΓ€higkeiten'],"Fokus")&
split_and_match(data['Sicherheit_FΓ€higkeiten'], [str(sec2)]) &
(
split_and_match(data['Fachgruppe_FΓ€higkeiten'], answer3+["ata"]) |
split_and_match(data['Studienbereich_FΓ€higkeiten'], answer5list+["ata"])
)
].copy()
#Sorting R1
dataes["rank1"]=5
dataes.loc[split_and_match(dataes['Fachgruppe_FΓ€higkeiten'], ["ata"]) &
split_and_match(dataes['Studienbereich_FΓ€higkeiten'], ["ata"])
, "rank1"]=4
dataes.loc[split_and_match(dataes['Fachgruppe_FΓ€higkeiten'], answer3) &
~split_and_match(dataes['Studienbereich_FΓ€higkeiten'], answer5list)
, "rank1"]=3
dataes.loc[
~split_and_match(dataes['Fachgruppe_FΓ€higkeiten'], answer3) &
split_and_match(dataes['Studienbereich_FΓ€higkeiten'], answer5list)
, "rank1"]=2
dataes.loc[split_and_match(dataes['Fachgruppe_FΓ€higkeiten'], answer3) &
split_and_match(dataes['Studienbereich_FΓ€higkeiten'], answer5list)
, "rank1"]=1
#EinbezugFilter--------------------------------------------
# Interessen
answer9list=[answer9]
if sec4 in [5,7]:
#Sorting R2
dataes["rank2"]=6
dataes.loc[split_and_match(dataes['Fachgruppe_Interessen'], ["Nan"]) &
split_and_match(dataes['Studienbereich_Interessen'], ["Nan"])
, "rank2"]=5
dataes.loc[split_and_match(dataes['Fachgruppe_Interessen'], ["ata"]) &
split_and_match(dataes['Studienbereich_Interessen'], ["ata"])
, "rank2"]=4
dataes.loc[split_and_match(dataes['Fachgruppe_Interessen'], answer7) &
~split_and_match(dataes['Studienbereich_Interessen'], answer9list)
, "rank2"]=3
dataes.loc[~split_and_match(dataes['Fachgruppe_Interessen'], answer7) &
split_and_match(dataes['Studienbereich_Interessen'], answer9list)
, "rank2"]=2
dataes.loc[split_and_match(dataes['Fachgruppe_Interessen'], answer7) &
split_and_match(dataes['Studienbereich_Interessen'], answer9list)
, "rank2"]=1
if sec4==1:
# Sorting R2
dataes["rank2"]=6
dataes.loc[split_and_match(dataes['Fachgruppe_Interessen'], ["ata"]) &
split_and_match(dataes['Studienbereich_Interessen'], ["ata"])
, "rank2"]=5
dataes.loc[split_and_match(dataes['Fachgruppe_Interessen'], answer7) &
~split_and_match(dataes['Studienbereich_Interessen'], answer9list)
, "rank2"]=4
dataes.loc[~split_and_match(dataes['Fachgruppe_Interessen'], answer7) &
split_and_match(dataes['Studienbereich_Interessen'], answer9list)
, "rank2"]=3
dataes.loc[split_and_match(dataes['Fachgruppe_Interessen'], answer7) &
split_and_match(dataes['Studienbereich_Interessen'], answer9list)
, "rank2"]=2
dataes.loc[split_and_match(dataes['Fachgruppe_Interessen'], ["Nan"]) &
split_and_match(dataes['Studienbereich_Interessen'], ["Nan"])
, "rank2"]=1
# Studium
if answer2!=None:
if answer2=="Studium":
answer2list=[answer2]
else:
answer2list=[answer2, "Studium", "Duales Studium"]
else:
answer2list=[answer2]
if sec1 in [5,7]:
dataes = dataes.loc[split_and_match(dataes['Auswahl_Studium_Ausbildung'], answer2list+ ["Nan","ata"])
].copy()
# Sorting R3
if answer2!="Studium":
dataes["rank3"]=5
dataes.loc[split_and_match(dataes['Auswahl_Studium_Ausbildung'], ["Nan"])
, "rank3"]=4
dataes.loc[split_and_match(dataes['Auswahl_Studium_Ausbildung'], ["Studium"])
, "rank3"]=3
dataes.loc[split_and_match(dataes['Auswahl_Studium_Ausbildung'], ["ata"])
, "rank3"]=2
dataes.loc[split_and_match(dataes['Auswahl_Studium_Ausbildung'], ["Duales Studium"])
, "rank3"]=1
else:
dataes["rank3"]=4
dataes.loc[split_and_match(dataes['Auswahl_Studium_Ausbildung'], ["Nan"])
, "rank3"]=3
dataes.loc[split_and_match(dataes['Auswahl_Studium_Ausbildung'], ["ata"])
, "rank3"]=2
dataes.loc[split_and_match(dataes['Auswahl_Studium_Ausbildung'], answer2list)
, "rank3"]=1
if sec1==1:
# Sorting R3
if answer2!="Studium":
dataes["rank3"]=5
dataes.loc[split_and_match(dataes['Auswahl_Studium_Ausbildung'], ["Studium"])
, "rank3"]=4
dataes.loc[split_and_match(dataes['Auswahl_Studium_Ausbildung'], ["ata"])
, "rank3"]=3
dataes.loc[split_and_match(dataes['Auswahl_Studium_Ausbildung'], ["Duales Studium"])
, "rank3"]=2
dataes.loc[split_and_match(dataes['Auswahl_Studium_Ausbildung'], ["Nan"])
, "rank3"]=1
else:
dataes["rank3"]=4
dataes.loc[split_and_match(dataes['Auswahl_Studium_Ausbildung'], ["ata"])
, "rank3"]=3
dataes.loc[split_and_match(dataes['Auswahl_Studium_Ausbildung'], answer2list)
, "rank3"]=2
dataes.loc[split_and_match(dataes['Auswahl_Studium_Ausbildung'], ["Nan"])
, "rank3"]=1
# Ort
if sec6 == 7:
dataes = dataes.loc[split_and_match(dataes['Auswahl_Orte'], answer12 + ["Nan","ata"])
].copy()
dataes["rank4"]=4
dataes.loc[split_and_match(dataes['Auswahl_Orte'], ["Nan"])
, "rank4"]=3
dataes.loc[split_and_match(dataes['Auswahl_Orte'], ["ata"])
, "rank4"]=2
dataes.loc[split_and_match(dataes['Auswahl_Orte'], answer12)
, "rank4"]=1
if sec6 == 5:
dataes["rank4"]=4
dataes.loc[split_and_match(dataes['Auswahl_Orte'], ["Nan"])
, "rank4"]=3
dataes.loc[split_and_match(dataes['Auswahl_Orte'], ["ata"])
, "rank4"]=2
dataes.loc[split_and_match(dataes['Auswahl_Orte'], answer12)
, "rank4"]=1
if sec6==1:
dataes["rank4"]=4
dataes.loc[split_and_match(dataes['Auswahl_Orte'], ["ata"])
, "rank4"]=3
dataes.loc[split_and_match(dataes['Auswahl_Orte'], answer12)
, "rank4"]=2
dataes.loc[split_and_match(dataes['Auswahl_Orte'], ["Nan"])
, "rank4"]=1
# Data output
dataesold=pd.concat([dataes]).copy()
df_sorted = dataes.sort_values(by=["rank1","rank2","rank3","rank4",'random_tiebreaker'], ascending=True).copy()
#expanderres2S.dataframe(df_sorted[["Link", "ID","Sicherheit_FÀhigkeiten", "Fachgruppe_FÀhigkeiten", "Type_FÀhigkeiten","RegelmÀßigkeit_Angebot","Zeitaufwand_Angebot","rank1","rank2","rank3","rank4",'random_tiebreaker',"pointsfil","pointsfillist"]])
###############################################################
# Ergebnissblock 3
###############################################################
#expanderres3 = st.expander("Empfehlung FΓ€higkeiten")
if sec4==7:
datae3 = data.iloc[0:0].copy()
datae3old=pd.concat([datae3]).copy()
#expanderres3.write("Keine Empfehlung")
else:
# Fokus Filter
answer9list=[answer9]
if sec4==5:
datae3 = data.loc[contains_value(data['Type_FΓ€higkeiten'],"Fokus")&
split_and_match(data['Sicherheit_FΓ€higkeiten'], [str(sec4)]) &
(
split_and_match(data['Fachgruppe_FΓ€higkeiten'], answer7+["ata"]) |
split_and_match(data['Studienbereich_FΓ€higkeiten'], answer9list+["ata"])
)
].copy()
#Sorting R1
datae3["rank1"]=5
datae3.loc[split_and_match(datae3['Fachgruppe_FΓ€higkeiten'], ["ata"]) &
split_and_match(datae3['Studienbereich_FΓ€higkeiten'], ["ata"])
, "rank1"]=4
datae3.loc[split_and_match(datae3['Fachgruppe_FΓ€higkeiten'], answer7) &
~split_and_match(datae3['Studienbereich_FΓ€higkeiten'], answer9list)
, "rank1"]=3
datae3.loc[
~split_and_match(datae3['Fachgruppe_FΓ€higkeiten'], answer7) &
split_and_match(datae3['Studienbereich_FΓ€higkeiten'], answer9list)
, "rank1"]=2
datae3.loc[split_and_match(datae3['Fachgruppe_FΓ€higkeiten'], answer7) &
split_and_match(datae3['Studienbereich_FΓ€higkeiten'], answer9list)
, "rank1"]=1
if sec4==1:
datae3 = data.loc[contains_value(data['Type_FΓ€higkeiten'],"Fokus")&
split_and_match(data['Sicherheit_FΓ€higkeiten'], [str(sec4)])
].copy()
#Sorting R1
datae3["rank1"]=1
#EinbezugFilter---------------------------------------------------------
# Interessen
answer5list=[answer9]
if sec2 in [5,7]:
#Sorting R2
datae3["rank2"]=6
datae3.loc[split_and_match(datae3['Fachgruppe_Interessen'], ["Nan"]) &
split_and_match(datae3['Studienbereich_Interessen'], ["Nan"])
, "rank2"]=5
datae3.loc[split_and_match(datae3['Fachgruppe_Interessen'], ["ata"]) &
split_and_match(datae3['Studienbereich_Interessen'], ["ata"])
, "rank2"]=4
datae3.loc[split_and_match(datae3['Fachgruppe_Interessen'], answer3) &
~split_and_match(datae3['Studienbereich_Interessen'], answer5list)
, "rank2"]=3
datae3.loc[~split_and_match(datae3['Fachgruppe_Interessen'], answer3) &
split_and_match(datae3['Studienbereich_Interessen'], answer5list)
, "rank2"]=2
datae3.loc[split_and_match(datae3['Fachgruppe_Interessen'], answer3) &
split_and_match(datae3['Studienbereich_Interessen'], answer5list)
, "rank2"]=1
if sec2==1:
# Sorting R2
datae3["rank2"]=6
datae3.loc[split_and_match(datae3['Fachgruppe_Interessen'], ["ata"]) &
split_and_match(datae3['Studienbereich_Interessen'], ["ata"])
, "rank2"]=5
datae3.loc[split_and_match(datae3['Fachgruppe_Interessen'], answer3) &
~split_and_match(datae3['Studienbereich_Interessen'], answer5list)
, "rank2"]=4
datae3.loc[~split_and_match(datae3['Fachgruppe_Interessen'], answer3) &
split_and_match(datae3['Studienbereich_Interessen'], answer5list)
, "rank2"]=3
datae3.loc[split_and_match(datae3['Fachgruppe_Interessen'], answer3) &
split_and_match(datae3['Studienbereich_Interessen'], answer5list)
, "rank2"]=2
datae3.loc[split_and_match(datae3['Fachgruppe_Interessen'], ["Nan"]) &
split_and_match(datae3['Studienbereich_Interessen'], ["Nan"])
, "rank2"]=1
# Studium
if answer2!=None:
if answer2=="Studium":
answer2list=[answer2]
else:
answer2list=[answer2, "Studium", "Duales Studium"]
else:
answer2list=[answer2]
if sec1 in [5,7]:
datae3 = datae3.loc[split_and_match(datae3['Auswahl_Studium_Ausbildung'], answer2list+ ["Nan","ata"])
].copy()
# Sorting R3
if answer2!="Studium":
datae3["rank3"]=5
datae3.loc[split_and_match(datae3['Auswahl_Studium_Ausbildung'], ["Nan"])
, "rank3"]=4
datae3.loc[split_and_match(datae3['Auswahl_Studium_Ausbildung'], ["Studium"])
, "rank3"]=3
datae3.loc[split_and_match(datae3['Auswahl_Studium_Ausbildung'], ["ata"])
, "rank3"]=2
datae3.loc[split_and_match(datae3['Auswahl_Studium_Ausbildung'], ["Duales Studium"])
, "rank3"]=1
else:
datae3["rank3"]=4
datae3.loc[split_and_match(datae3['Auswahl_Studium_Ausbildung'], ["Nan"])
, "rank3"]=3
datae3.loc[split_and_match(datae3['Auswahl_Studium_Ausbildung'], ["ata"])
, "rank3"]=2
datae3.loc[split_and_match(datae3['Auswahl_Studium_Ausbildung'], answer2list)
, "rank3"]=1
if sec1==1:
# Sorting R3
if answer2!="Studium":
datae3["rank3"]=5
datae3.loc[split_and_match(datae3['Auswahl_Studium_Ausbildung'], ["Studium"])
, "rank3"]=4
datae3.loc[split_and_match(datae3['Auswahl_Studium_Ausbildung'], ["ata"])
, "rank3"]=3
datae3.loc[split_and_match(datae3['Auswahl_Studium_Ausbildung'], ["Duales Studium"])
, "rank3"]=2
datae3.loc[split_and_match(datae3['Auswahl_Studium_Ausbildung'], ["Nan"])
, "rank3"]=1
else:
datae3["rank3"]=4
datae3.loc[split_and_match(datae3['Auswahl_Studium_Ausbildung'], ["ata"])
, "rank3"]=3
datae3.loc[split_and_match(datae3['Auswahl_Studium_Ausbildung'], answer2list)
, "rank3"]=2
datae3.loc[split_and_match(datae3['Auswahl_Studium_Ausbildung'], ["Nan"])
, "rank3"]=1
# Ort
if sec6 == 7:
datae3 = datae3.loc[split_and_match(datae3['Auswahl_Orte'], answer12 + ["Nan","ata"])
].copy()
datae3["rank4"]=4
datae3.loc[split_and_match(datae3['Auswahl_Orte'], ["Nan"])
, "rank4"]=3
datae3.loc[split_and_match(datae3['Auswahl_Orte'], ["ata"])
, "rank4"]=2
datae3.loc[split_and_match(datae3['Auswahl_Orte'], answer12)
, "rank4"]=1
if sec6 == 5:
datae3["rank4"]=4
datae3.loc[split_and_match(datae3['Auswahl_Orte'], ["Nan"])
, "rank4"]=3
datae3.loc[split_and_match(datae3['Auswahl_Orte'], ["ata"])
, "rank4"]=2
datae3.loc[split_and_match(datae3['Auswahl_Orte'], answer12)
, "rank4"]=1
if sec6==1:
datae3["rank4"]=4
datae3.loc[split_and_match(datae3['Auswahl_Orte'], ["ata"])
, "rank4"]=3
datae3.loc[split_and_match(datae3['Auswahl_Orte'], answer12)
, "rank4"]=2
datae3.loc[split_and_match(datae3['Auswahl_Orte'], ["Nan"])
, "rank4"]=1
# Data output
datae3old=pd.concat([datae3]).copy()
df_sorted = datae3.sort_values(by=["rank1","rank2","rank3","rank4",'random_tiebreaker'], ascending=True).copy()
#expanderres3.dataframe(df_sorted[["Link", "ID","Sicherheit_FÀhigkeiten", "Fachgruppe_FÀhigkeiten", "Type_FÀhigkeiten","RegelmÀßigkeit_Angebot","Zeitaufwand_Angebot","rank1","rank2","rank3","rank4",'random_tiebreaker',"pointsfil","pointsfillist"]])
#################################################################
# Ergebnissblock 3S
#################################################################
#expanderres3S = st.expander("Empfehlung FΓ€higkeitenS")
if sec4==1:
datae3s = data.iloc[0:0].copy()
datae3sold=pd.concat([datae3s]).copy()
#expanderres3S.write("Keine Empfehlung")
elif sec4==7 & sec2 ==7:
datae3s = data.iloc[0:0].copy()
datae3sold=pd.concat([datae3s]).copy()
#expanderres3S.write("Keine Empfehlung")
elif sec2==7:
datae3s = data.iloc[0:0].copy()
datae3sold=pd.concat([datae3s]).copy()
#expanderres3S.write("Keine Empfehlung")
else:
# Fokus Filter
answer9list=[answer9]
if sec4 in [5,7]:
datae3s = data.loc[contains_value(data['Type_Interessen'],"Fokus")&
split_and_match(data['Sicherheit_Interessen'], [str(sec4)]) &
(
split_and_match(data['Fachgruppe_Interessen'], answer7+["ata"]) |
split_and_match(data['Studienbereich_Interessen'], answer9list+["ata"])
)
].copy()
#Sorting R1
datae3s["rank1"]=5
datae3s.loc[split_and_match(datae3s['Fachgruppe_Interessen'], ["ata"]) &
split_and_match(datae3s['Studienbereich_Interessen'], ["ata"])
, "rank1"]=4
datae3s.loc[split_and_match(datae3s['Fachgruppe_Interessen'], answer7) &
~split_and_match(datae3s['Studienbereich_Interessen'], answer9list)
, "rank1"]=3
datae3s.loc[
~split_and_match(datae3s['Fachgruppe_Interessen'], answer7) &
split_and_match(datae3s['Studienbereich_Interessen'], answer9list)
, "rank1"]=2
datae3s.loc[split_and_match(datae3s['Fachgruppe_Interessen'], answer7) &
split_and_match(datae3s['Studienbereich_Interessen'], answer9list)
, "rank1"]=1
#EinbezugFilter---------------------------------------------------------------
# Interessen
answer5list=[answer9]
if sec2 in [5]:
#Sorting R2
datae3s["rank2"]=6
datae3s.loc[split_and_match(datae3s['Fachgruppe_FΓ€higkeiten'], ["Nan"]) &
split_and_match(datae3s['Studienbereich_FΓ€higkeiten'], ["Nan"])
, "rank2"]=5
datae3s.loc[split_and_match(datae3s['Fachgruppe_FΓ€higkeiten'], ["ata"]) &
split_and_match(datae3s['Studienbereich_FΓ€higkeiten'], ["ata"])
, "rank2"]=4
datae3s.loc[split_and_match(datae3s['Fachgruppe_FΓ€higkeiten'], answer3) &
~split_and_match(datae3s['Studienbereich_FΓ€higkeiten'], answer5list)
, "rank2"]=3
datae3s.loc[~split_and_match(datae3s['Fachgruppe_FΓ€higkeiten'], answer3) &
split_and_match(datae3s['Studienbereich_FΓ€higkeiten'], answer5list)
, "rank2"]=2
datae3s.loc[split_and_match(datae3s['Fachgruppe_FΓ€higkeiten'], answer3) &
split_and_match(datae3s['Studienbereich_FΓ€higkeiten'], answer5list)
, "rank2"]=1
if sec2==1:
# Sorting R2
datae3s["rank2"]=6
datae3s.loc[split_and_match(datae3s['Fachgruppe_FΓ€higkeiten'], ["ata"]) &
split_and_match(datae3s['Studienbereich_FΓ€higkeiten'], ["ata"])
, "rank2"]=5
datae3s.loc[split_and_match(datae3s['Fachgruppe_FΓ€higkeiten'], answer3) &
~split_and_match(datae3s['Studienbereich_FΓ€higkeiten'], answer5list)
, "rank2"]=4
datae3s.loc[~split_and_match(datae3s['Fachgruppe_FΓ€higkeiten'], answer3) &
split_and_match(datae3s['Studienbereich_FΓ€higkeiten'], answer5list)
, "rank2"]=3
datae3s.loc[split_and_match(datae3s['Fachgruppe_FΓ€higkeiten'], answer3) &
split_and_match(datae3s['Studienbereich_FΓ€higkeiten'], answer5list)
, "rank2"]=2
datae3s.loc[split_and_match(datae3s['Fachgruppe_FΓ€higkeiten'], ["Nan"]) &
split_and_match(datae3s['Studienbereich_FΓ€higkeiten'], ["Nan"])
, "rank2"]=1
# Studium
if answer2!=None:
if answer2=="Studium":
answer2list=[answer2]
else:
answer2list=[answer2, "Studium", "Duales Studium"]
else:
answer2list=[answer2]
if sec1 in [5,7]:
datae3s = datae3s.loc[split_and_match(datae3s['Auswahl_Studium_Ausbildung'], answer2list+ ["Nan","ata"])
].copy()
# Sorting R3
if answer2!="Studium":
datae3s["rank3"]=5
datae3s.loc[split_and_match(datae3s['Auswahl_Studium_Ausbildung'], ["Nan"])
, "rank3"]=4
datae3s.loc[split_and_match(datae3s['Auswahl_Studium_Ausbildung'], ["Studium"])
, "rank3"]=3
datae3s.loc[split_and_match(datae3s['Auswahl_Studium_Ausbildung'], ["ata"])
, "rank3"]=2
datae3s.loc[split_and_match(datae3s['Auswahl_Studium_Ausbildung'], ["Duales Studium"])
, "rank3"]=1
else:
datae3s["rank3"]=4
datae3s.loc[split_and_match(datae3s['Auswahl_Studium_Ausbildung'], ["Nan"])
, "rank3"]=3
datae3s.loc[split_and_match(datae3s['Auswahl_Studium_Ausbildung'], ["ata"])
, "rank3"]=2
datae3s.loc[split_and_match(datae3s['Auswahl_Studium_Ausbildung'], answer2list)
, "rank3"]=1
if sec1==1:
# Sorting R3
if answer2!="Studium":
datae3s["rank3"]=5
datae3s.loc[split_and_match(datae3s['Auswahl_Studium_Ausbildung'], ["Studium"])
, "rank3"]=4
datae3s.loc[split_and_match(datae3s['Auswahl_Studium_Ausbildung'], ["ata"])
, "rank3"]=3
datae3s.loc[split_and_match(datae3s['Auswahl_Studium_Ausbildung'], ["Duales Studium"])
, "rank3"]=2
datae3s.loc[split_and_match(datae3s['Auswahl_Studium_Ausbildung'], ["Nan"])
, "rank3"]=1
else:
datae3s["rank3"]=4
datae3s.loc[split_and_match(datae3s['Auswahl_Studium_Ausbildung'], ["ata"])
, "rank3"]=3
datae3s.loc[split_and_match(datae3s['Auswahl_Studium_Ausbildung'], answer2list)
, "rank3"]=2
datae3s.loc[split_and_match(datae3s['Auswahl_Studium_Ausbildung'], ["Nan"])
, "rank3"]=1
# Ort
if sec6 == 7:
datae3s = datae3s.loc[split_and_match(datae3s['Auswahl_Orte'], answer12 + ["Nan","ata"])
].copy()
datae3s["rank4"]=4
datae3s.loc[split_and_match(datae3s['Auswahl_Orte'], ["Nan"])
, "rank4"]=3
datae3s.loc[split_and_match(datae3s['Auswahl_Orte'], ["ata"])
, "rank4"]=2
datae3s.loc[split_and_match(datae3s['Auswahl_Orte'], answer12)
, "rank4"]=1
if sec6 == 5:
datae3s["rank4"]=4
datae3s.loc[split_and_match(datae3s['Auswahl_Orte'], ["Nan"])
, "rank4"]=3
datae3s.loc[split_and_match(datae3s['Auswahl_Orte'], ["ata"])
, "rank4"]=2
datae3s.loc[split_and_match(datae3s['Auswahl_Orte'], answer12)
, "rank4"]=1
if sec6==1:
datae3s["rank4"]=4
datae3s.loc[split_and_match(datae3s['Auswahl_Orte'], ["ata"])
, "rank4"]=3
datae3s.loc[split_and_match(datae3s['Auswahl_Orte'], answer12)
, "rank4"]=2
datae3s.loc[split_and_match(datae3s['Auswahl_Orte'], ["Nan"])
, "rank4"]=1
# Data output
datae3sold=pd.concat([datae3s]).copy()
df_sorted = datae3s.sort_values(by=["rank1","rank2","rank3","rank4",'random_tiebreaker'], ascending=True).copy()
#expanderres3S.dataframe(df_sorted[["Link","ID", "Sicherheit_Interessen", "Fachgruppe_Interessen", "Type_Interessen","RegelmÀßigkeit_Angebot","Zeitaufwand_Angebot","rank1","rank2","rank3","rank4",'random_tiebreaker',"pointsfil"]])
###########################################################
# Ergebnissblock 4
###########################################################
#expanderres4 = st.expander("Empfehlung Region")
if sec6==7:
datae4 = data.iloc[0:0].copy()
datae4old=pd.concat([datae4]).copy()
#expanderres4.write("Keine Empfehlung")
else:
#Filter Fokus
if sec6 == 5:
datae4 = data.loc[contains_value(data['Type_Orte'],"Fokus")&
split_and_match(data['Sicherheit_Orte'],[str(sec6)]) &
split_and_match(data['Auswahl_Orte'], answer12+["ata"])
].copy()
#Sorting R1
datae4["rank1"]=4
datae4.loc[split_and_match(datae4['Auswahl_Orte'], ["Nan"])
, "rank1"]=3
datae4.loc[split_and_match(datae4['Auswahl_Orte'], ["ata"])
, "rank1"]=2
datae4.loc[split_and_match(datae4['Auswahl_Orte'], answer12)
, "rank1"]=1
if sec6==1:
#Sorting R1
datae4 = data.loc[contains_value(data['Type_Orte'],"Fokus")&
split_and_match(data['Sicherheit_Orte'],[str(sec6)])
].copy()
datae4["rank1"]=1
#EinbezugFilter
# Interessen
answer5list=[answer5]
if sec2 in [5,7] and sec4 in [5,7]:
answer3M=answer3+answer7
answer5listM=answer5list+[answer9]
datae4 = datae4.loc[split_and_match(datae4['Fachgruppe_Interessen'], answer3M+ ["Nan","ata"]) |
split_and_match(datae4['Studienbereich_Interessen'], answer5listM+ ["Nan","ata"])
].copy()
#Sorting R2
datae4["rank2"]=6
datae4.loc[split_and_match(datae4['Fachgruppe_Interessen'], ["Nan"]) &
split_and_match(datae4['Studienbereich_Interessen'], ["Nan"])
, "rank2"]=5
datae4.loc[split_and_match(datae4['Fachgruppe_Interessen'], ["ata"]) &
split_and_match(datae4['Studienbereich_Interessen'], ["ata"])
, "rank2"]=4
datae4.loc[split_and_match(datae4['Fachgruppe_Interessen'], answer3M) &
~split_and_match(datae4['Studienbereich_Interessen'], answer5listM)
, "rank2"]=3
datae4.loc[~split_and_match(datae4['Fachgruppe_Interessen'], answer3M) &
split_and_match(datae4['Studienbereich_Interessen'], answer5listM)
, "rank2"]=2
datae4.loc[split_and_match(datae4['Fachgruppe_Interessen'], answer3M) &
split_and_match(datae4['Studienbereich_Interessen'], answer5listM)
, "rank2"]=1
elif sec2 in [5,7]:
answer3M=answer3
answer5listM=answer5list
datae4 = datae4.loc[split_and_match(datae4['Fachgruppe_Interessen'], answer3M+ ["Nan","ata"]) |
split_and_match(datae4['Studienbereich_Interessen'], answer5listM+ ["Nan","ata"])
].copy()
#Sorting R2
datae4["rank2"]=6
datae4.loc[split_and_match(datae4['Fachgruppe_Interessen'], ["Nan"]) &
split_and_match(datae4['Studienbereich_Interessen'], ["Nan"])
, "rank2"]=5
datae4.loc[split_and_match(datae4['Fachgruppe_Interessen'], ["ata"]) &
split_and_match(datae4['Studienbereich_Interessen'], ["ata"])
, "rank2"]=4
datae4.loc[split_and_match(datae4['Fachgruppe_Interessen'], answer3M) &
~split_and_match(datae4['Studienbereich_Interessen'], answer5listM)
, "rank2"]=3
datae4.loc[~split_and_match(datae4['Fachgruppe_Interessen'], answer3M) &
split_and_match(datae4['Studienbereich_Interessen'], answer5listM)
, "rank2"]=2
datae4.loc[split_and_match(datae4['Fachgruppe_Interessen'], answer3M) &
split_and_match(datae4['Studienbereich_Interessen'], answer5listM)
, "rank2"]=1
if sec2==1:
# Sorting R2
datae4["rank2"]=6
datae4.loc[split_and_match(datae4['Fachgruppe_Interessen'], ["ata"]) &
~split_and_match(datae4['Studienbereich_Interessen'], ["ata"])
, "rank2"]=5
datae4.loc[split_and_match(datae4['Fachgruppe_Interessen'], answer3) &
~split_and_match(datae4['Studienbereich_Interessen'], answer5list)
, "rank2"]=4
datae4.loc[~split_and_match(datae4['Fachgruppe_Interessen'], answer3) &
split_and_match(datae4['Studienbereich_Interessen'], answer5list)
, "rank2"]=3
datae4.loc[split_and_match(datae4['Fachgruppe_Interessen'], answer3) &
split_and_match(datae4['Studienbereich_Interessen'], answer5list)
, "rank2"]=2
datae4.loc[split_and_match(datae4['Fachgruppe_Interessen'], ["Nan"]) &
split_and_match(datae4['Studienbereich_Interessen'], ["Nan"])
, "rank2"]=1
# FΓ€higkeiten
answer9list=[answer9]
if sec4 in [5,7] and sec2 in [5,7]:
answer7M=answer3+answer7
answer9listM=answer5list+[answer9]
datae4 = datae4.loc[split_and_match(datae4['Fachgruppe_FΓ€higkeiten'], answer7M+ ["Nan","ata"]) |
split_and_match(datae4['Studienbereich_FΓ€higkeiten'], answer9listM+ ["Nan","ata"])
].copy()
#Sorting R3
datae4["rank3"]=6
datae4.loc[split_and_match(datae4['Fachgruppe_FΓ€higkeiten'], ["Nan"]) &
split_and_match(datae4['Studienbereich_FΓ€higkeiten'], ["Nan"])
, "rank3"]=5
datae4.loc[split_and_match(datae4['Fachgruppe_FΓ€higkeiten'], ["ata"]) &
split_and_match(datae4['Studienbereich_FΓ€higkeiten'], ["ata"])
, "rank3"]=4
datae4.loc[split_and_match(datae4['Fachgruppe_FΓ€higkeiten'], answer7M) &
~split_and_match(datae4['Studienbereich_FΓ€higkeiten'], answer9listM)
, "rank3"]=3
datae4.loc[~split_and_match(datae4['Fachgruppe_FΓ€higkeiten'], answer7M) &
split_and_match(datae4['Studienbereich_FΓ€higkeiten'], answer9listM)
, "rank3"]=2
datae4.loc[split_and_match(datae4['Fachgruppe_FΓ€higkeiten'], answer7M) &
split_and_match(datae4['Studienbereich_FΓ€higkeiten'], answer9listM)
, "rank3"]=1
elif sec4 in [5,7]:
answer7M=answer7
answer9listM=answer9list
datae4 = datae4.loc[split_and_match(datae4['Fachgruppe_FΓ€higkeiten'], answer7M+ ["Nan","ata"]) |
split_and_match(datae4['Studienbereich_FΓ€higkeiten'], answer9listM+ ["Nan","ata"])
].copy()
#Sorting R3
datae4["rank3"]=6
datae4.loc[split_and_match(datae4['Fachgruppe_FΓ€higkeiten'], ["Nan"]) &
split_and_match(datae4['Studienbereich_FΓ€higkeiten'], ["Nan"])
, "rank3"]=5
datae4.loc[split_and_match(datae4['Fachgruppe_FΓ€higkeiten'], ["ata"]) &
split_and_match(datae4['Studienbereich_FΓ€higkeiten'], ["ata"])
, "rank3"]=4
datae4.loc[split_and_match(datae4['Fachgruppe_FΓ€higkeiten'], answer7M) &
~split_and_match(datae4['Studienbereich_FΓ€higkeiten'], answer9listM)
, "rank3"]=3
datae4.loc[~split_and_match(datae4['Fachgruppe_FΓ€higkeiten'], answer7M) &
split_and_match(datae4['Studienbereich_FΓ€higkeiten'], answer9listM)
, "rank3"]=2
datae4.loc[split_and_match(datae4['Fachgruppe_FΓ€higkeiten'], answer7M) &
split_and_match(datae4['Studienbereich_FΓ€higkeiten'], answer9listM)
, "rank3"]=1
if sec4==1:
# Sorting R3
datae4["rank3"]=6
datae4.loc[split_and_match(datae4['Fachgruppe_FΓ€higkeiten'], ["ata"]) &
~split_and_match(datae4['Studienbereich_FΓ€higkeiten'], ["ata"])
, "rank3"]=4
datae4.loc[split_and_match(datae4['Fachgruppe_FΓ€higkeiten'], answer7) &
~split_and_match(datae4['Studienbereich_FΓ€higkeiten'], answer9list)
, "rank3"]=4
datae4.loc[~split_and_match(datae4['Fachgruppe_FΓ€higkeiten'], answer7) &
split_and_match(datae4['Studienbereich_FΓ€higkeiten'], answer9list)
, "rank3"]=3
datae4.loc[split_and_match(datae4['Fachgruppe_FΓ€higkeiten'], answer7) &
split_and_match(datae4['Studienbereich_FΓ€higkeiten'], answer9list)
, "rank3"]=2
datae4.loc[split_and_match(datae4['Fachgruppe_FΓ€higkeiten'], ["Nan"]) &
split_and_match(datae4['Studienbereich_FΓ€higkeiten'], ["Nan"])
, "rank3"]=1
# Studium
if answer2!=None:
if answer2=="Studium":
answer2list=[answer2]
else:
answer2list=[answer2, "Studium", "Duales Studium"]
else:
answer2list=[answer2]
if sec1 in [5,7]:
datae4 = datae4.loc[split_and_match(datae4['Auswahl_Studium_Ausbildung'], answer2list+ ["Nan","ata"])
].copy()
# Sorting R3
if answer2!="Studium":
datae4["rank4"]=5
datae4.loc[split_and_match(datae4['Auswahl_Studium_Ausbildung'], ["Nan"])
, "rank4"]=4
datae4.loc[split_and_match(datae4['Auswahl_Studium_Ausbildung'], ["Studium"])
, "rank4"]=3
datae4.loc[split_and_match(datae4['Auswahl_Studium_Ausbildung'], ["ata"])
, "rank4"]=2
datae4.loc[split_and_match(datae4['Auswahl_Studium_Ausbildung'], ["Duales Studium"])
, "rank4"]=1
else:
datae4["rank4"]=4
datae4.loc[split_and_match(datae4['Auswahl_Studium_Ausbildung'], ["Nan"])
, "rank4"]=3
datae4.loc[split_and_match(datae4['Auswahl_Studium_Ausbildung'], ["ata"])
, "rank4"]=2
datae4.loc[split_and_match(datae4['Auswahl_Studium_Ausbildung'], answer2list)
, "rank4"]=1
if sec1==1:
# Sorting R3
if answer2!="Studium":
datae4["rank4"]=5
datae4.loc[split_and_match(datae4['Auswahl_Studium_Ausbildung'], ["Studium"])
, "rank4"]=4
datae4.loc[split_and_match(datae4['Auswahl_Studium_Ausbildung'], ["ata"])
, "rank4"]=3
datae4.loc[split_and_match(datae4['Auswahl_Studium_Ausbildung'], ["Duales Studium"])
, "rank4"]=2
datae4.loc[split_and_match(datae4['Auswahl_Studium_Ausbildung'], ["Nan"])
, "rank4"]=1
else:
datae4["rank4"]=4
datae4.loc[split_and_match(datae4['Auswahl_Studium_Ausbildung'], ["ata"])
, "rank4"]=3
datae4.loc[split_and_match(datae4['Auswahl_Studium_Ausbildung'], answer2list)
, "rank4"]=2
datae4.loc[split_and_match(datae4['Auswahl_Studium_Ausbildung'], ["Nan"])
, "rank4"]=1
# Data output
datae4old=pd.concat([datae4]).copy()
df_sorted = datae4.sort_values(by=["rank1","rank2","rank3","rank4",'random_tiebreaker'], ascending=True).copy()
#expanderres4.dataframe(df_sorted[["Link","ID", "Sicherheit_Orte", "Type_Orte","RegelmÀßigkeit_Angebot","Zeitaufwand_Angebot","rank1","rank2","rank3","rank4",'random_tiebreaker',"pointsfil"]])
#####################################################################################
#############################Mehr Orientierung und UnterstΓΌtzung#####################
#####################################################################################
st.title("Mehr Orientierung und UnterstΓΌtzung")
st.write("Sich fΓΌr einen Beruf bzw. fΓΌr ein Studium zu entscheiden, ist eine komplexe Angelegenheit. Welche nΓ€chsten Schritte sind fΓΌr Dich gerade besonders wichtig? Welche Informationen und welche UnterstΓΌtzung kΓΆnntest Du jetzt brauchen? WΓ€hle die Begriffe aus, die Dich interessieren und klicke danach auf β€žweiterβ€œ.")
# Fragen
bedarflist = []
bedarf_dict = {}
# Bedarfsauswahl --------------------------------------------
# Column 1
with st.expander("Selbsterkenntnis"):
#if answer4>=5:
bedarflist.append("Sicherheit_Interessen_")
bedarf_dict["Sicherheit_Interessen_"] = "Sicherheit_Interessen_"
#if answer8>=5:
bedarflist.append("Sicherheit_FΓ€higkeiten")
bedarf_dict["Sicherheit_FΓ€higkeiten"] = "Sicherheit_FΓ€higkeiten"
B1 = st.select_slider(label='Ich mΓΆchte als NΓ€chstes verstehen, welche Werte mir bei der Berufswahl wichtig sind.'
,options=[1, 2, 3, 4, 5, 6, 7], key="B1", value=1,
format_func=lambda x: labels[x])
if B1>=5:
bedarflist.append("Werte")
bedarf_dict["Werte"] = "Werte"
B2 = st.select_slider(label='Ich mΓΆchte als NΓ€chstes erlernen, wie ich mit den beruflichen Erwartungen meiner Eltern oder anderer Bezugspersonen an mich selbstbestimmt umgehen kann.'
,options=[1, 2, 3, 4, 5, 6, 7], key="B2", value=1,
format_func=lambda x: labels[x])
if B2>=5:
bedarflist.append("Eltern_und_andere_Bezugspersonen")
bedarf_dict["Eltern_und_andere_Bezugspersonen"] = "Eltern_und_andere_Bezugspersonen"
B3 = st.select_slider(label='Ich mΓΆchte als NΓ€chstes eine berufliche Zielvorstellung entwickeln.'
,options=[1, 2, 3, 4, 5, 6, 7], key="B3", value=1,
format_func=lambda x: labels[x])
if B3>=5:
bedarflist.append("berufliche_Zielvorstellungen")
bedarf_dict["berufliche_Zielvorstellungen"] = "berufliche_Zielvorstellungen"
B4 = st.select_slider(label='Ich mΓΆchte als NΓ€chstes herausfinden, ob ich fΓΌr einen Ausbildungs- oder Studiengang geeignet bin.'
,options=[1, 2, 3, 4, 5, 6, 7], key="B4", value=1,
format_func=lambda x: labels[x])
if B4>=5:
bedarflist.append("Eignung")
bedarf_dict["Eignung"] = "Eignung"
B5 = st.select_slider(label='Ich mΓΆchte als NΓ€chstes eine Hilfsmittelkompetenz erlernen, damit ich mit einer EinschrΓ€nkung eine Ausbildung oder ein Studium absolvieren kann.'
,options=[1, 2, 3, 4, 5, 6, 7], key="B5", value=1,
format_func=lambda x: labels[x])
if B5>=5:
bedarflist.append("Hilfsmittelkompetenz")
bedarf_dict["Hilfsmittelkompetenz"] = "Hilfsmittelkompetenz"
B6 = st.select_slider(label='Ich mΓΆchte als NΓ€chstes ΓΌben, eine Entscheidung zu treffen.'
,options=[1, 2, 3, 4, 5, 6, 7], key="B6", value=1,
format_func=lambda x: labels[x])
if B6>=5:
bedarflist.append("Entscheidung")
bedarf_dict["Entscheidung"] = "Entscheidung"
with st.expander("Bildungsgangbedarfe"):
bedarflist.append("Sicherheit_Studium_Ausbildung_")
bedarf_dict["Sicherheit_Studium_Ausbildung_"] = "Sicherheit_Studium_Ausbildung_"
B7 = st.select_slider(label='Ich mΓΆchte als NΓ€chstes mich mit dem Einfluss von Stereotypen (z.B. ein Psychologiestudium bedeutet man wird Psychotherapeut:in) auseinandersetzen.'
,options=[1, 2, 3, 4, 5, 6, 7], key="B7", value=1,
format_func=lambda x: labels[x])
if B7>=5:
bedarflist.append("Einfluss_Stereotypen")
bedarf_dict["Einfluss_Stereotypen"] = "Einfluss_Stereotypen"
B8 = st.select_slider(label='Ich mΓΆchte als NΓ€chstes verschiedene Ausbildungs- und/oder StudiengΓ€nge (Schreiner, Tischler, Literaturwissenschaften, Molekulare Biotechnologie, ...) kennenlernen.'
,options=[1, 2, 3, 4, 5, 6, 7], key="B8", value=1,
format_func=lambda x: labels[x])
if B8>=5:
bedarflist.append("versch._BildungsgΓ€nge_kennenlernen")
bedarf_dict["versch._BildungsgΓ€nge_kennenlernen"] = "versch._BildungsgΓ€nge_kennenlernen"
B82 = st.select_slider(label='Ich mΓΆchte als NΓ€chstes herausfinden, welche Hochschulart (Angewandte Hochschule, PΓ€dagogische, VolluniversitΓ€t, …) zu mir passt.'
,options=[1, 2, 3, 4, 5, 6, 7], key="B82", value=1,
format_func=lambda x: labels[x])
if B82>=5:
bedarflist.append("Hochschulart")
bedarf_dict["Hochschulart"] = "Hochschulart"
B9 = st.select_slider(label='Ich mΓΆchte als NΓ€chstes herausfinden, was die Anforderungen fΓΌr einen Ausbildungsgang und/oder ein Studium sind.'
,options=[1, 2, 3, 4, 5, 6, 7], key="B9", value=1,
format_func=lambda x: labels[x])
if B9>=5:
bedarflist.append("Anforderungen")
bedarf_dict["Anforderungen"] = "Anforderungen"
B10 = st.select_slider(label='Ich mΓΆchte als NΓ€chstes unterschiedliche Ausbildungsbereiche (Handwerk, kaufmΓ€nnische Ausbildungen, IT, ...) und/oder unterschiedliche Studienfelder (Geisteswissenschaften, Naturwissenschaften, ...) kennenlernen.'
,options=[1, 2, 3, 4, 5, 6, 7], key="B10", value=1,
format_func=lambda x: labels[x])
if B10>=5:
bedarflist.append("Studienfelder")
bedarf_dict["Studienfelder"] = "Studienfelder"
B11 = st.select_slider(label='Ich mΓΆchte als NΓ€chstes herausfinden, wie eine Ausbildung und/oder ein Studium aufgebaut ist.'
,options=[1, 2, 3, 4, 5, 6, 7], key="B11", value=1,
format_func=lambda x: labels[x])
if B11>=5:
bedarflist.append("Aufbau")
bedarf_dict["Aufbau"] = "Aufbau"
B12 = st.select_slider(label='Ich mΓΆchte als NΓ€chstes herausfinden, welche Arten von Freiwilligendiensten es gibt.'
,options=[1, 2, 3, 4, 5, 6, 7], key="B12", value=1,
format_func=lambda x: labels[x])
if B12>=5:
bedarflist.append("Arten_von_Freiwilligendiensten")
bedarf_dict["Arten_von_Freiwilligendiensten"] = "Arten_von_Freiwilligendiensten"
with st.expander("Berufsbedarfe"):
B13 = st.select_slider(label='Ich mΓΆchte als NΓ€chstes verschiedene Berufe kennenlernen.'
,options=[1, 2, 3, 4, 5, 6, 7], key="B13", value=1,
format_func=lambda x: labels[x])
if B13>=5:
bedarflist.append("verschiedene_Berufe_kennenlernen")
bedarf_dict["verschiedene_Berufe_kennenlernen"] = "verschiedene Berufe kennenlernen"
B14 = st.select_slider(label='Ich mΓΆchte als NΓ€chstes herausfinden, in welchem Berufsfeld (Dienstleistung, Gesundheitswesen, ...) ich arbeiten mΓΆchte.'
,options=[1, 2, 3, 4, 5, 6, 7], key="B14", value=1,
format_func=lambda x: labels[x])
if B14>=5:
bedarflist.append("Berufsfelder_kennenlernen")
bedarf_dict["Berufsfelder_kennenlernen"] = "Berufsfelder_kennenlernen"
B15 = st.select_slider(label='Ich mΓΆchte als NΓ€chstes herausfinden, wie viel Geld man in einem Beruf verdient.'
,options=[1, 2, 3, 4, 5, 6, 7], key="B15", value=1,
format_func=lambda x: labels[x])
if B15>=5:
bedarflist.append("Verdienst")
bedarf_dict["Verdienst"] = "Verdienst"
B16 = st.select_slider(label='Ich mΓΆchte als NΓ€chstes herausfinden, wie sich der Arbeitsmarkt in der Zukunft entwickelt.'
,options=[1, 2, 3, 4, 5, 6, 7], key="B16", value=1,
format_func=lambda x: labels[x])
if B16>=5:
bedarflist.append("Arbeitsmarkt_der_Zukunft")
bedarf_dict["Arbeitsmarkt_der_Zukunft"] = "Arbeitsmarkt_der_Zukunft"
B17 = st.select_slider(label='Ich mΓΆchte als NΓ€chstes unterschiedliche Karrierewege kennenlernen.'
,options=[1, 2, 3, 4, 5, 6, 7], key="B17", value=1,
format_func=lambda x: labels[x])
if B17>=5:
bedarflist.append("Karrierewege")
bedarf_dict["Karrierewege"] = "Karrierewege"
with st.expander("Finanzierungsbedarfe"):
B18 = st.select_slider(label='Ich mΓΆchte als NΓ€chstes herausfinden, wie ich eine Ausbildung oder ein (duales) Studium finanzieren kann.'
,options=[1, 2, 3, 4, 5, 6, 7], key="B18", value=1,
format_func=lambda x: labels[x])
if B18>=5:
bedarflist.append("Finanzierung")
bedarf_dict["Finanzierung"] = "Finanzierung"
B19 = st.select_slider(label='Ich mΓΆchte als NΓ€chstes herausfinden, welche Stiftungen es zur Ausbildungs- und Studienfinanzierung gibt.'
,options=[1, 2, 3, 4, 5, 6, 7], key="B19", value=1,
format_func=lambda x: labels[x])
if B19>=5:
bedarflist.append("Stipendien")
bedarf_dict["Stipendien"] = "Stipendien"
with st.expander("Bewerbungs- und Zulassungsbedarfe"):
B20 = st.select_slider(label='Ich mΓΆchte als NΓ€chstes herausfinden, in welchem Zeitraum ich mich fΓΌr den Ausbildungs- oder Studiengang bewerben muss, den ich aufnehmen mΓΆchte.'
,options=[1, 2, 3, 4, 5, 6, 7], key="B20", value=1,
format_func=lambda x: labels[x])
if B20>=5:
bedarflist.append("BewerbungszeitrΓ€ume")
bedarf_dict["BewerbungszeitrΓ€ume"] = "BewerbungszeitrΓ€ume"
B21 = st.select_slider(label='Ich mΓΆchte als NΓ€chstes herausfinden, was die Zugangsvoraussetzungen fΓΌr den Ausbildungs- oder Studiengang sind, fΓΌr den ich mich bewerben mΓΆchte.'
,options=[1, 2, 3, 4, 5, 6, 7], key="B21", value=1,
format_func=lambda x: labels[x])
if B21>=5:
bedarflist.append("Bewerbungs-_und_Zulassungsvoraussetzungen")
bedarf_dict["Bewerbungs-_und_Zulassungsvoraussetzungen"] = "Bewerbungs-_und_Zulassungsvoraussetzungen"
#Merkmale Filter-----------------------------------------
filter=["online"]
# Filter einbezug und sortierung #######################################
########################################################################
dataM5AM=dataM5.copy()
answer5list=[answer5]
if sec2 in [5,7] and sec4 in [5,7]:
answer3M=answer3+answer7
answer5listM=answer5list+[answer9]
dataM5AM = dataM5AM.loc[split_and_match(dataM5AM['Fachgruppe_Interessen'], answer3M+ ["Nan","ata"]) |
split_and_match(datae1['Studienbereich_Interessen'], answer5listM+ ["Nan","ata"])
].copy()
#Sorting R2
dataM5AM["rank2"]=6
dataM5AM.loc[split_and_match(dataM5AM['Fachgruppe_Interessen'], ["Nan"]) &
split_and_match(dataM5AM['Studienbereich_Interessen'], ["Nan"])
, "rank2"]=5
dataM5AM.loc[split_and_match(dataM5AM['Fachgruppe_Interessen'], ["ata"]) &
split_and_match(dataM5AM['Studienbereich_Interessen'], ["ata"])
, "rank2"]=4
dataM5AM.loc[split_and_match(dataM5AM['Fachgruppe_Interessen'], answer3M) &
~split_and_match(dataM5AM['Studienbereich_Interessen'], answer5listM)
, "rank2"]=3
dataM5AM.loc[~split_and_match(dataM5AM['Fachgruppe_Interessen'], answer3M) &
split_and_match(dataM5AM['Studienbereich_Interessen'], answer5listM)
, "rank2"]=2
dataM5AM.loc[split_and_match(dataM5AM['Fachgruppe_Interessen'], answer3M) &
split_and_match(dataM5AM['Studienbereich_Interessen'], answer5listM)
, "rank2"]=1
elif sec2 in [5,7]:
answer3M=answer3
answer5listM=answer5list
dataM5AM = dataM5AM.loc[split_and_match(dataM5AM['Fachgruppe_Interessen'], answer3M+ ["Nan","ata"]) |
split_and_match(dataM5AM['Studienbereich_Interessen'], answer5listM+ ["Nan","ata"])
].copy()
#Sorting R2
dataM5AM["rank2"]=6
dataM5AM.loc[split_and_match(dataM5AM['Fachgruppe_Interessen'], ["Nan"]) &
split_and_match(dataM5AM['Studienbereich_Interessen'], ["Nan"])
, "rank2"]=5
dataM5AM.loc[split_and_match(dataM5AM['Fachgruppe_Interessen'], ["ata"]) &
split_and_match(dataM5AM['Studienbereich_Interessen'], ["ata"])
, "rank2"]=4
dataM5AM.loc[split_and_match(dataM5AM['Fachgruppe_Interessen'], answer3M) &
~split_and_match(dataM5AM['Studienbereich_Interessen'], answer5listM)
, "rank2"]=3
dataM5AM.loc[~split_and_match(dataM5AM['Fachgruppe_Interessen'], answer3M) &
split_and_match(dataM5AM['Studienbereich_Interessen'], answer5listM)
, "rank2"]=2
dataM5AM.loc[split_and_match(dataM5AM['Fachgruppe_Interessen'], answer3M) &
split_and_match(dataM5AM['Studienbereich_Interessen'], answer5listM)
, "rank2"]=1
if sec2==1:
# Sorting R2
dataM5AM["rank2"]=6
dataM5AM.loc[split_and_match(dataM5AM['Fachgruppe_Interessen'], ["ata"]) &
split_and_match(dataM5AM['Studienbereich_Interessen'], ["ata"])
, "rank2"]=5
dataM5AM.loc[split_and_match(dataM5AM['Fachgruppe_Interessen'], answer3) &
~split_and_match(dataM5AM['Studienbereich_Interessen'], answer5list)
, "rank2"]=4
dataM5AM.loc[~split_and_match(dataM5AM['Fachgruppe_Interessen'], answer3) &
split_and_match(dataM5AM['Studienbereich_Interessen'], answer5list)
, "rank2"]=3
dataM5AM.loc[split_and_match(dataM5AM['Fachgruppe_Interessen'], answer3) &
split_and_match(dataM5AM['Studienbereich_Interessen'], answer5list)
, "rank2"]=2
dataM5AM.loc[split_and_match(dataM5AM['Fachgruppe_Interessen'], ["Nan"]) &
split_and_match(dataM5AM['Studienbereich_Interessen'], ["Nan"])
, "rank2"]=1
# FΓ€higkeiten
answer9list=[answer9]
if sec4 in [5,7] and sec2 in [5,7]:
answer7M=answer3+answer7
answer9listM=answer5list+[answer9]
dataM5AM = dataM5AM.loc[split_and_match(dataM5AM['Fachgruppe_FΓ€higkeiten'], answer7M+ ["Nan","ata"]) |
split_and_match(dataM5AM['Studienbereich_FΓ€higkeiten'], answer9listM+ ["Nan","ata"])
].copy()
#Sorting R3
dataM5AM["rank3"]=6
dataM5AM.loc[split_and_match(dataM5AM['Fachgruppe_FΓ€higkeiten'], ["Nan"]) &
split_and_match(dataM5AM['Studienbereich_FΓ€higkeiten'], ["Nan"])
, "rank3"]=5
dataM5AM.loc[split_and_match(dataM5AM['Fachgruppe_FΓ€higkeiten'], ["ata"]) &
split_and_match(dataM5AM['Studienbereich_FΓ€higkeiten'], ["ata"])
, "rank3"]=4
dataM5AM.loc[split_and_match(dataM5AM['Fachgruppe_FΓ€higkeiten'], answer7M) &
~split_and_match(dataM5AM['Studienbereich_FΓ€higkeiten'], answer9listM)
, "rank3"]=3
dataM5AM.loc[~split_and_match(dataM5AM['Fachgruppe_FΓ€higkeiten'], answer7M) &
split_and_match(dataM5AM['Studienbereich_FΓ€higkeiten'], answer9listM)
, "rank3"]=2
dataM5AM.loc[split_and_match(dataM5AM['Fachgruppe_FΓ€higkeiten'], answer7M) &
split_and_match(dataM5AM['Studienbereich_FΓ€higkeiten'], answer9listM)
, "rank3"]=1
elif sec4 in [5,7]:
answer7M=answer7
answer9listM=answer9list
dataM5AM = dataM5AM.loc[split_and_match(dataM5AM['Fachgruppe_FΓ€higkeiten'], answer7M+ ["Nan","ata"]) |
split_and_match(dataM5AM['Studienbereich_FΓ€higkeiten'], answer9listM+ ["Nan","ata"])
].copy()
#Sorting R3
dataM5AM["rank3"]=6
dataM5AM.loc[split_and_match(dataM5AM['Fachgruppe_FΓ€higkeiten'], ["Nan"]) &
split_and_match(dataM5AM['Studienbereich_FΓ€higkeiten'], ["Nan"])
, "rank3"]=5
dataM5AM.loc[split_and_match(dataM5AM['Fachgruppe_FΓ€higkeiten'], ["ata"]) &
split_and_match(dataM5AM['Studienbereich_FΓ€higkeiten'], ["ata"])
, "rank3"]=4
dataM5AM.loc[split_and_match(dataM5AM['Fachgruppe_FΓ€higkeiten'], answer7M) &
~split_and_match(dataM5AM['Studienbereich_FΓ€higkeiten'], answer9listM)
, "rank3"]=3
dataM5AM.loc[~split_and_match(dataM5AM['Fachgruppe_FΓ€higkeiten'], answer7M) &
split_and_match(dataM5AM['Studienbereich_FΓ€higkeiten'], answer9listM)
, "rank3"]=2
dataM5AM.loc[split_and_match(dataM5AM['Fachgruppe_FΓ€higkeiten'], answer7M) &
split_and_match(dataM5AM['Studienbereich_FΓ€higkeiten'], answer9listM)
, "rank3"]=1
if sec4==1:
# Sorting R3
dataM5AM["rank3"]=6
dataM5AM.loc[split_and_match(dataM5AM['Fachgruppe_FΓ€higkeiten'], ["ata"]) &
split_and_match(dataM5AM['Studienbereich_FΓ€higkeiten'], ["ata"])
, "rank3"]=5
dataM5AM.loc[split_and_match(dataM5AM['Fachgruppe_FΓ€higkeiten'], answer7) &
~split_and_match(dataM5AM['Studienbereich_FΓ€higkeiten'], answer9list)
, "rank3"]=4
dataM5AM.loc[~split_and_match(dataM5AM['Fachgruppe_FΓ€higkeiten'], answer7) &
split_and_match(dataM5AM['Studienbereich_FΓ€higkeiten'], answer9list)
, "rank3"]=3
dataM5AM.loc[split_and_match(dataM5AM['Fachgruppe_FΓ€higkeiten'], answer7) &
split_and_match(dataM5AM['Studienbereich_FΓ€higkeiten'], answer9list)
, "rank3"]=2
dataM5AM.loc[split_and_match(dataM5AM['Fachgruppe_FΓ€higkeiten'], ["Nan"]) &
split_and_match(dataM5AM['Studienbereich_FΓ€higkeiten'], ["Nan"])
, "rank3"]=1
# Studium
if answer2!=None:
if answer2=="Studium":
answer2list=[answer2]
else:
answer2list=[answer2, "Studium", "Duales Studium"]
else:
answer2list=[answer2]
if sec1 in [5,7]:
dataM5AM = dataM5AM.loc[split_and_match(dataM5AM['Auswahl_Studium_Ausbildung'], answer2list+ ["Nan","ata"])
].copy()
# Sorting R4
if answer2!="Studium":
dataM5AM["rank4"]=5
dataM5AM.loc[split_and_match(dataM5AM['Auswahl_Studium_Ausbildung'], ["Nan"])
, "rank4"]=4
dataM5AM.loc[split_and_match(dataM5AM['Auswahl_Studium_Ausbildung'], ["Studium"])
, "rank4"]=3
dataM5AM.loc[split_and_match(dataM5AM['Auswahl_Studium_Ausbildung'], ["ata"])
, "rank4"]=2
dataM5AM.loc[split_and_match(dataM5AM['Auswahl_Studium_Ausbildung'], ["Duales Studium"])
, "rank4"]=1
else:
dataM5AM["rank4"]=4
dataM5AM.loc[split_and_match(dataM5AM['Auswahl_Studium_Ausbildung'], ["Nan"])
, "rank4"]=3
dataM5AM.loc[split_and_match(dataM5AM['Auswahl_Studium_Ausbildung'], ["ata"])
, "rank4"]=2
dataM5AM.loc[split_and_match(dataM5AM['Auswahl_Studium_Ausbildung'], answer2list)
, "rank4"]=1
if sec1==1:
# Sorting R4
if answer2!="Studium":
dataM5AM["rank4"]=5
dataM5AM.loc[split_and_match(dataM5AM['Auswahl_Studium_Ausbildung'], ["Studium"])
, "rank4"]=4
dataM5AM.loc[split_and_match(dataM5AM['Auswahl_Studium_Ausbildung'], ["ata"])
, "rank4"]=3
dataM5AM.loc[split_and_match(dataM5AM['Auswahl_Studium_Ausbildung'], ["Duales Studium"])
, "rank4"]=2
dataM5AM.loc[split_and_match(dataM5AM['Auswahl_Studium_Ausbildung'], ["Nan"])
, "rank4"]=1
else:
dataM5AM["rank4"]=4
dataM5AM.loc[split_and_match(dataM5AM['Auswahl_Studium_Ausbildung'], ["ata"])
, "rank4"]=3
dataM5AM.loc[split_and_match(dataM5AM['Auswahl_Studium_Ausbildung'], answer2list)
, "rank4"]=2
dataM5AM.loc[split_and_match(dataM5AM['Auswahl_Studium_Ausbildung'], ["Nan"])
, "rank4"]=1
# Ort
if sec6 == 7:
dataM5AM = dataM5AM.loc[split_and_match(dataM5AM['Auswahl_Orte'], answer12 + ["Nan","ata"])
].copy()
dataM5AM["rank5"]=4
dataM5AM.loc[split_and_match(dataM5AM['Auswahl_Orte'], ["Nan"])
, "rank5"]=3
dataM5AM.loc[split_and_match(dataM5AM['Auswahl_Orte'], ["ata"])
, "rank5"]=2
dataM5AM.loc[split_and_match(dataM5AM['Auswahl_Orte'], answer12)
, "rank5"]=1
if sec6 == 5:
dataM5AM["rank5"]=4
dataM5AM.loc[split_and_match(dataM5AM['Auswahl_Orte'], ["Nan"])
, "rank5"]=3
dataM5AM.loc[split_and_match(dataM5AM['Auswahl_Orte'], ["ata"])
, "rank5"]=2
dataM5AM.loc[split_and_match(dataM5AM['Auswahl_Orte'], answer12)
, "rank5"]=1
if sec6==1:
dataM5AM["rank5"]=4
dataM5AM.loc[split_and_match(dataM5AM['Auswahl_Orte'], ["ata"])
, "rank5"]=3
dataM5AM.loc[split_and_match(dataM5AM['Auswahl_Orte'], answer12)
, "rank5"]=2
dataM5AM.loc[split_and_match(dataM5AM['Auswahl_Orte'], ["Nan"])
, "rank5"]=1
st.title("Ergebnistabelle")
st.write("Im folgenden Bereich erhÀltst du eine Übersicht unterschiedlicher Angebote, die hilfreich in deiner aktuellen Situation zur Studienorientierung sein kânnen. Bitte âffne die nachfolgende Tabelle, suche Dir für Dich passende Angebote aus und bearbeite diese in den nÀchsten 60 Minuten. Merke dir dabei die Listenposition des von dir bearbeiteten Angebotes, bzw. der Angebote, weil Du in der Nachbefragung danach gefragt werden wirst.")
# Angebote die Bedarfe erfΓΌllen filtern
bedarflist = [col for col in bedarflist if (dataM5AM[col] == 1).any()]
#st.write(bedarflist)
for l in bedarflist:
dataM5AM.loc[dataM5AM[l]==1, 'pointsfilB'] += 1
dataM5AM.loc[dataM5AM[l]==1, 'pointsfilBSORT'] += 1
dataM5AM.loc[dataM5AM[l]==1, 'pointsfilBSORTlist'] += ";"+str(l)
dataM5AM.loc[dataM5AM[l]==1, 'pointsfilBlist'] += ";"+str(l)
#B1_e = st.expander("Empfehlung")
dataW=dataM5AM[dataM5AM["pointsfilB"]>0].copy()
dataWsave=dataW.copy()
dataWsave=dataWsave.sort_values(
by=["pointsfilB","pointsfilBSORT","rank2","rank3","rank4","rank5","random_tiebreaker"],
ascending=False
).reset_index(drop=True).copy()
more=None
IDs="NONE"
# B2 Block
if bedarflist:
#bedarfspecified = st.multiselect('Welche von den ausgewΓ€hlten Interessen willst du nutzen?', list(bedarf_dict.values()), default=None,
#key="qbs")
#matching_keys = [key for key, value in bedarf_dict.items() if value in bedarfspecified]
#bedarfspecified = [col for col in matching_keys if (dataM5AM[col] == 1).any()]
if bedarflist==[]:
st.write("Sorry dafΓΌr haben wir nichts in der momentanen Auswahl.")
else:
#for l in bedarfspecified:
#dataW.loc[dataW[l]==1, 'pointsfilBS'] += 1
#dataW.loc[dataW[l]==1, 'pointsfilBSSORTlist'] += ";"+str(l)
#dataWS = dataW[dataW["pointsfilBS"]>0]
# Sort and add Platz column (same rank if only random_tiebreaker differs)
dataWS=dataW
dataWS = dataWS.sort_values(
by=["pointsfilB","pointsfilBSORT","rank2","rank3","rank4","rank5","random_tiebreaker"],
ascending=False
).reset_index(drop=True)
dataWS.insert(0, 'Platz',
dataWS[["pointsfilB","pointsfilBSORT","rank2","rank3","rank4","rank5"]]
.apply(tuple, axis=1)
.rank(method='dense', ascending=True)
.astype(int)
)
B2_e = st.expander("**Angebotsempfehlung: Klicke hier fΓΌr Orientierungsangebote, die dir helfen.**")
with B2_e:
cols = ["Link","Art_Angebot", "Inhalt_Angebot", "Anbieter_Angebot", "Auswahl_Orte", "Zeitaufwand_Angebot"]
column_config = {
"Link": st.column_config.LinkColumn(
"Link",
display_text="πŸ”— Γ–ffnen",
width=90
),
"Art_Angebot": st.column_config.TextColumn(
"Art",
width=80
),
"Inhalt_Angebot": st.column_config.TextColumn(
"Inhalt",
width=150
),
"Anbieter_Angebot": st.column_config.TextColumn(
"Anbieter",
width=100
),
"Auswahl_Orte": st.column_config.TextColumn(
"Orte",
width=100
),
"Zeitaufwand_Angebot": st.column_config.TextColumn(
"Zeitaufwand",
width=100
),
}
st.dataframe(
dataWS[cols].head(10),
column_config=column_config,
hide_index=True,
use_container_width=True
)
IDs = "_".join(dataWS["ID"].head(10).astype(str).tolist())
if "more" not in st.session_state:
st.session_state.more = False
if len(dataWS) > 10:
if st.button("Zeige mehr an", key="B2_mehr"):
st.session_state.more = True # ← persist the click
if st.session_state.more: # ← use session state, not the button return value
st.dataframe(
dataWS[cols].iloc[10:20],
column_config=column_config,
hide_index=True,
use_container_width=True,
)
IDs = "_".join(dataWS["ID"].head(10).astype(str).tolist())
##########################################################################
# SAVE TO GOOGLE SHEETS
##########################################################################
# ── Collect outputs safely ──────────────────────────────────────
def safe_df_str(var_name, df_var, cols):
try:
return df_to_str(df_var, cols)
except Exception:
return "nicht verfΓΌgbar"
out_cols_1 = ["Link","ID","rank1","rank2","rank3","rank4"]
out_cols_2 = ["Link","ID","rank1","rank2","rank3","rank4"]
out_cols_3 = ["Link","ID","rank1","rank2","rank3","rank4"]
out_cols_4 = ["Link","ID","rank1","rank2","rank3","rank4"]
out_cols_M5 = ["Link","ID","Art_Angebot", "Inhalt_Angebot","Anbieter_Angebot", "Auswahl_Orte", "Zeitaufwand_Angebot","pointsfilB","pointsfilBlist","rank2","rank3","rank4","rank5","random_tiebreaker"]
out_cols_M5B = ["Link","ID","Platz","Art_Angebot", "Inhalt_Angebot","Anbieter_Angebot", "Auswahl_Orte", "Zeitaufwand_Angebot","pointsfilB","pointsfilBlist","rank2","rank3","rank4","rank5","random_tiebreaker"]
with B2_e:
linkbutton= st.button("**Weiter machen mit der Nachbefragung**")
if linkbutton:
payload = {
# ── Inputs Block 1 ──────────────────────────────────────────
"q1_bildungsweg_sicherheit": answer1,
"q2_bildungsweg_auswahl": answer2,
"s1_weiss_nicht": skip1,
# ── Inputs Block 2 ──────────────────────────────────────────
"q3_interessen": ", ".join(answer3) if isinstance(answer3, list) else answer3,
"q4_interessen_sicherheit": answer4,
"s2_weiss_nicht": skip2,
# ── Inputs Block 3 ──────────────────────────────────────────
"q7_faehigkeiten": ", ".join(answer7) if isinstance(answer7, list) else answer7,
"q8_faehigkeiten_sicherheit": answer8,
"s3_weiss_nicht": skip3,
# ── Inputs Block 4 ──────────────────────────────────────────
"q11_region_sicherheit": answer11,
"q12_region_orte": ", ".join(answer12) if isinstance(answer12, list) else answer12,
"s4_weiss_nicht": skip4,
# ── Filter Block 1 ──────────────────────────────────────────
"filter_angebotsmerkmale": ", ".join(filter) if filter else "",
# ── Bedarf sliders ──────────────────────────────────────────
"B1": B1, "B2": B2, "B3": B3, "B4": B4,
"B5": B5, "B6": B6, "B7": B7, "B8": B8,
"B82": B82,"B9": B9, "B10": B10,"B11": B11,
"B12": B12,"B13": B13,"B14": B14,"B15": B15,
"B16": B16,"B17": B17,"B18": B18,"B19": B19,
"B20": B20,"B21": B21,
"bedarflist_auto": ", ".join(bedarflist),
"bedarflist_manual": ", ".join(bedarfspecified) if 'bedarfspecified' in dir() else "",
# ── Filter M5 ───────────────────────────────────────────────
"filter_M5": ", ".join(filter) if filter else "",
# ── Outputs ─────────────────────────────────────────────────
"more10":st.session_state.more,
"out_empfehlung_bildungsweg": safe_df_str("e1", datae1old.head(10), out_cols_1),
"out_empfehlung_interessen": safe_df_str("e2", datae2old.head(10), out_cols_2),
"out_empfehlung_interessenS": safe_df_str("e2s", dataesold.head(10), out_cols_2),
"out_empfehlung_faehigkeiten": safe_df_str("e3", datae3old.head(10), out_cols_3),
"out_empfehlung_faehigkeitenS": safe_df_str("e3s", datae3sold.head(10), out_cols_3),
"out_empfehlung_region": safe_df_str("e4", datae4old.head(10), out_cols_4),
#"out_empfehlung_M5_B1": safe_df_str("m5", dataWsave.head(20), out_cols_M5),
"out_empfehlung_M5_B2": safe_df_str("m5b2", dataWS.head(20) if 'dataWS' in dir() else None, out_cols_M5B),
}
save_all(user_id, payload)
print("Alles gespeichert!")
link= "https://sosci.sowi.uni-mannheim.de/osa_2026/?q=Bedarfe26_Till_post&id="+user_id+"&en="+IDs+"&bn="+str(answer1)+"__" +str(answer2)+"__"+str(skip1)+"__" +str(", ".join(answer3) if isinstance(answer3, list) else answer3)+"__"+str(answer4)+"__"+str(skip2)+"__"+str(", ".join(answer7) if isinstance(answer7, list) else answer7)+"__"+str(answer8)+"__"+str(skip3)+"__"+str(answer11)+"__"+str(", ".join(answer12) if isinstance(answer12, list) else answer12)+"__"+str(skip4)+"__"+str(B1)+"__"+str(B2)+"__"+str(B3)+"__"+str(B4)+"__"+str(B5)+"__"+str(B6)+"__"+str(B7)+"__"+str(B8)+"__"+str(B82)+"__"+str(B9)+"__"+str(B10)+"__"+str(B11)+"__"+str(B12)+"__"+str(B13)+"__"+str(B14)+"__"+str(B15)+"__"+str(B16)+"__"+str(B17)+"__"+str(B18)+"__"+str(B19)+"__"+str(B20)+"__"+str(B21)+"__"+str(st.session_state.more)
#if bedarflist:
st.markdown(
f'<div style="background-color:red; padding:10px; border-radius:5px;">'
f'<a href="{link}" style="color:white; font-weight:bold;">Klick hier</a>'
f'</div>',
unsafe_allow_html=True
)