albhu commited on
Commit
c6706a3
·
verified ·
1 Parent(s): d7fd570

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +66 -52
app.py CHANGED
@@ -23,7 +23,7 @@ if uploaded_file:
23
  # Betöltés Excel fájl
24
  excel_data = pd.ExcelFile(uploaded_file)
25
  sheet_names = excel_data.sheet_names
26
-
27
  st.write("Munkalapok a fájlban:")
28
  st.write(sheet_names)
29
 
@@ -31,66 +31,80 @@ if uploaded_file:
31
  relevant_data = []
32
  for sheet in sheet_names:
33
  df = excel_data.parse(sheet)
34
- if "Név" in df.columns and "Elérhetőség" in df.columns:
35
- st.write(f"Adatok a '{sheet}' munkalapról:")
36
- st.dataframe(df)
 
 
 
 
37
  relevant_data.append(df)
38
-
 
 
39
  # Összesített adatok
40
  if relevant_data:
41
  combined_data = pd.concat(relevant_data, ignore_index=True)
42
  st.write("Kombinált adatok:")
43
  st.dataframe(combined_data)
44
 
45
- # Adatfeldolgozás
46
- combined_data["Elérhető napok"] = combined_data["Elérhetőség"].apply(lambda x: x.split(","))
47
- combined_data["Korlátozások"] = combined_data["Korlátozások"].apply(lambda x: x.split(",") if pd.notna(x) else [])
48
- foglalt_napok = {}
49
- beosztas = []
50
-
51
- for nap in range(1, 8): # Példa: 7 napos beosztás
52
- nap_nev = f"Nap {nap}"
53
- for index, row in combined_data.iterrows():
54
- if nap_nev in row["Elérhető napok"]:
55
- korlatozott = any(
56
- foglalt_napok.get(nap_nev) == szemely
57
- for szemely in row["Korlátozások"]
58
- )
59
- if not korlatozott:
60
- foglalt_napok[nap_nev] = row["Név"]
61
- # Szöveg generálása
62
- prompt = f"{row['Név']} ügyel {nap_nev}-n, mert "
63
- indoklas = generator(prompt, max_length=50, num_return_sequences=1)[0]["generated_text"]
64
- beosztas.append({
65
- "Nap": nap_nev,
66
- "Orvos": row["Név"],
67
- "Indoklás": indoklas
68
- })
69
- break
70
-
71
- # Beosztás megjelenítése
72
- beosztas_df = pd.DataFrame(beosztas)
73
- st.write("Generált Ügyeleti Beosztás:")
74
- st.dataframe(beosztas_df)
75
-
76
- # Exportálás Excelbe
77
- @st.cache_data
78
- def convert_to_excel(data):
79
- import io
80
- output = io.BytesIO()
81
- with pd.ExcelWriter(output, engine="openpyxl") as writer:
82
- data.to_excel(writer, index=False)
83
- processed_data = output.getvalue()
84
- return processed_data
85
-
86
- excel_data = convert_to_excel(beosztas_df)
87
- st.download_button(
88
- label="Beosztás letöltése Excelben",
89
- data=excel_data,
90
- file_name="ugyeleti_beosztas.xlsx",
91
- mime="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
92
  )
93
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
94
  else:
95
  st.warning("Nem található releváns adat a munkalapokon.")
96
 
 
23
  # Betöltés Excel fájl
24
  excel_data = pd.ExcelFile(uploaded_file)
25
  sheet_names = excel_data.sheet_names
26
+
27
  st.write("Munkalapok a fájlban:")
28
  st.write(sheet_names)
29
 
 
31
  relevant_data = []
32
  for sheet in sheet_names:
33
  df = excel_data.parse(sheet)
34
+ st.write(f"Elemzés a '{sheet}' munkalapon:")
35
+ st.dataframe(df.head())
36
+
37
+ # Oszlopok azonosítása
38
+ oszlopok = df.columns.str.lower()
39
+ if any("név" in col for col in oszlopok):
40
+ st.write(f"Releváns adat található a '{sheet}' munkalapon.")
41
  relevant_data.append(df)
42
+ else:
43
+ st.write(f"A '{sheet}' munkalap nem tartalmaz releváns adatokat.")
44
+
45
  # Összesített adatok
46
  if relevant_data:
47
  combined_data = pd.concat(relevant_data, ignore_index=True)
48
  st.write("Kombinált adatok:")
49
  st.dataframe(combined_data)
50
 
51
+ # Felhasználói input az elérhetőségi napokhoz
52
+ available_days = st.multiselect(
53
+ "Add meg az elérhetőségi napokat (pl. Hétfő, Kedd, ...):",
54
+ options=["Hétfő", "Kedd", "Szerda", "Csütörtök", "Péntek", "Szombat", "Vasárnap"]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
55
  )
56
 
57
+ if available_days:
58
+ combined_data["Elérhető napok"] = [available_days] * len(combined_data)
59
+
60
+ # Adatfeldolgozás
61
+ combined_data["Korlátozások"] = combined_data["Korlátozások"].apply(lambda x: x.split(",") if pd.notna(x) else [])
62
+ foglalt_napok = {}
63
+ beosztas = []
64
+
65
+ for nap in available_days:
66
+ for index, row in combined_data.iterrows():
67
+ if nap in row["Elérhető napok"]:
68
+ korlatozott = any(
69
+ foglalt_napok.get(nap) == szemely
70
+ for szemely in row["Korlátozások"]
71
+ )
72
+ if not korlatozott:
73
+ foglalt_napok[nap] = row["Név"]
74
+ # Szöveg generálása
75
+ prompt = f"{row['Név']} ügyel {nap}-n, mert "
76
+ indoklas = generator(prompt, max_length=50, num_return_sequences=1)[0]["generated_text"]
77
+ beosztas.append({
78
+ "Nap": nap,
79
+ "Orvos": row["Név"],
80
+ "Indoklás": indoklas
81
+ })
82
+ break
83
+
84
+ # Beosztás megjelenítése
85
+ beosztas_df = pd.DataFrame(beosztas)
86
+ st.write("Generált Ügyeleti Beosztás:")
87
+ st.dataframe(beosztas_df)
88
+
89
+ # Exportálás Excelbe
90
+ @st.cache_data
91
+ def convert_to_excel(data):
92
+ import io
93
+ output = io.BytesIO()
94
+ with pd.ExcelWriter(output, engine="openpyxl") as writer:
95
+ data.to_excel(writer, index=False)
96
+ processed_data = output.getvalue()
97
+ return processed_data
98
+
99
+ excel_data = convert_to_excel(beosztas_df)
100
+ st.download_button(
101
+ label="Beosztás letöltése Excelben",
102
+ data=excel_data,
103
+ file_name="ugyeleti_beosztas.xlsx",
104
+ mime="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
105
+ )
106
+ else:
107
+ st.warning("Kérlek, válaszd ki az elérhetőségi napokat.")
108
  else:
109
  st.warning("Nem található releváns adat a munkalapokon.")
110