kreemyyyy commited on
Commit
650aa84
·
verified ·
1 Parent(s): b19f62f

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +15 -59
app.py CHANGED
@@ -20,108 +20,64 @@ def adjust_excel_formatting(file_path):
20
 
21
  def process_file_a_to_b(input_file):
22
  try:
23
- # Read the Excel file, skipping the first row (OVERNIGHT/MORNING header)
24
  input_df = pd.read_excel(input_file.name, header=1)
25
-
26
- # Get the date columns (all columns except the first one which contains model names)
27
  date_columns = input_df.columns[1:].tolist()
28
-
29
- # Melt the dataframe to long format
30
  df_long = input_df.melt(
31
- id_vars=[input_df.columns[0]], # First column (Model names)
32
  var_name='DATE',
33
  value_name='CHATTER'
34
  )
35
-
36
- # Clean up the data
37
- df_long = df_long[df_long['CHATTER'].notna()] # Remove empty cells
38
- df_long = df_long[df_long['CHATTER'] != ''] # Remove empty strings
39
- df_long = df_long[df_long['CHATTER'] != 'OFF'] # Remove 'OFF' entries
40
-
41
- # Group by chatter and date, collect all models
42
  grouped = df_long.groupby(['CHATTER', 'DATE'])[input_df.columns[0]].apply(
43
  lambda x: ', '.join(sorted(x))
44
  ).reset_index()
45
-
46
- # Pivot to get chatters as rows and dates as columns
47
  pivoted = grouped.pivot(
48
  index='CHATTER',
49
  columns='DATE',
50
  values=input_df.columns[0]
51
  )
52
-
53
- # Reorder columns to match original date order
54
  pivoted = pivoted[date_columns]
55
-
56
- # Define the expected order of chatters
57
- expected_chatters = [
58
- 'VELJKO2', 'VELJKO3', 'MARKO', 'GODDARD', 'ALEKSANDER', 'FEELIP',
59
- 'DENIS', 'TOME', 'MILA', 'VELJKO', 'DAMJAN', 'DULE', 'CONRAD',
60
- 'ALEXANDER', 'VEJKO3'
61
- ]
62
-
63
- # Reindex with expected order, keeping any additional chatters at the end
64
- final_df = pivoted.reindex(expected_chatters + [x for x in pivoted.index if x not in expected_chatters])
65
-
66
- # Fill empty cells with 'OFF'
67
  final_df = final_df.fillna('OFF')
68
-
69
- # Reset index and rename the index column to 'CHATTER'
70
  final_df = final_df.reset_index()
71
  final_df = final_df.rename(columns={'index': 'CHATTER'})
72
-
73
  return final_df
74
  except Exception as e:
75
  return pd.DataFrame({"Error": [str(e)]})
76
 
77
  def process_file_b_to_a(input_file):
78
  try:
79
- # Read the Excel file
80
  input_df = pd.read_excel(input_file.name, header=0)
81
-
82
- # Get the date columns (all columns except the first one which contains chatter names)
83
  date_columns = input_df.columns[1:].tolist()
84
-
85
- # Melt the dataframe to long format
86
  df_long = input_df.melt(
87
- id_vars=[input_df.columns[0]], # First column (Chatter names)
88
  var_name='DATE',
89
  value_name='MODEL'
90
  )
91
-
92
- # Clean up the data
93
- df_long = df_long[df_long['MODEL'].notna()] # Remove empty cells
94
- df_long = df_long[df_long['MODEL'] != ''] # Remove empty strings
95
- df_long = df_long[df_long['MODEL'] != 'OFF'] # Remove 'OFF' entries
96
-
97
- # Split comma-separated models into separate rows
98
  df_long['MODEL'] = df_long['MODEL'].str.split(', ')
99
  df_long = df_long.explode('MODEL')
100
-
101
- # Group by model and date, collect all chatters
102
  grouped = df_long.groupby(['MODEL', 'DATE'])[input_df.columns[0]].apply(
103
  lambda x: ', '.join(sorted(x))
104
  ).reset_index()
105
-
106
- # Pivot to get models as rows and dates as columns
107
  pivoted = grouped.pivot(
108
  index='MODEL',
109
  columns='DATE',
110
  values=input_df.columns[0]
111
  )
112
-
113
- # Reorder columns to match original date order
114
  pivoted = pivoted[date_columns]
115
-
116
- # Sort models alphabetically
117
- final_df = pivoted.sort_index()
118
-
119
- # Fill empty cells with 'OFF'
120
  final_df = final_df.fillna('OFF')
121
-
122
- # Reset index to make MODEL a column
123
  final_df = final_df.reset_index()
124
-
125
  return final_df
126
  except Exception as e:
127
  return pd.DataFrame({"Error": [str(e)]})
 
20
 
21
  def process_file_a_to_b(input_file):
22
  try:
 
23
  input_df = pd.read_excel(input_file.name, header=1)
 
 
24
  date_columns = input_df.columns[1:].tolist()
 
 
25
  df_long = input_df.melt(
26
+ id_vars=[input_df.columns[0]],
27
  var_name='DATE',
28
  value_name='CHATTER'
29
  )
30
+ df_long = df_long[df_long['CHATTER'].notna()]
31
+ df_long = df_long[df_long['CHATTER'] != '']
32
+ df_long = df_long[df_long['CHATTER'] != 'OFF']
 
 
 
 
33
  grouped = df_long.groupby(['CHATTER', 'DATE'])[input_df.columns[0]].apply(
34
  lambda x: ', '.join(sorted(x))
35
  ).reset_index()
 
 
36
  pivoted = grouped.pivot(
37
  index='CHATTER',
38
  columns='DATE',
39
  values=input_df.columns[0]
40
  )
 
 
41
  pivoted = pivoted[date_columns]
42
+ # Use the order of chatters as they appear in the input file
43
+ input_order = grouped['CHATTER'].drop_duplicates().tolist()
44
+ final_df = pivoted.reindex(input_order)
 
 
 
 
 
 
 
 
 
45
  final_df = final_df.fillna('OFF')
 
 
46
  final_df = final_df.reset_index()
47
  final_df = final_df.rename(columns={'index': 'CHATTER'})
 
48
  return final_df
49
  except Exception as e:
50
  return pd.DataFrame({"Error": [str(e)]})
51
 
52
  def process_file_b_to_a(input_file):
53
  try:
 
54
  input_df = pd.read_excel(input_file.name, header=0)
 
 
55
  date_columns = input_df.columns[1:].tolist()
 
 
56
  df_long = input_df.melt(
57
+ id_vars=[input_df.columns[0]],
58
  var_name='DATE',
59
  value_name='MODEL'
60
  )
61
+ df_long = df_long[df_long['MODEL'].notna()]
62
+ df_long = df_long[df_long['MODEL'] != '']
63
+ df_long = df_long[df_long['MODEL'] != 'OFF']
 
 
 
 
64
  df_long['MODEL'] = df_long['MODEL'].str.split(', ')
65
  df_long = df_long.explode('MODEL')
 
 
66
  grouped = df_long.groupby(['MODEL', 'DATE'])[input_df.columns[0]].apply(
67
  lambda x: ', '.join(sorted(x))
68
  ).reset_index()
 
 
69
  pivoted = grouped.pivot(
70
  index='MODEL',
71
  columns='DATE',
72
  values=input_df.columns[0]
73
  )
 
 
74
  pivoted = pivoted[date_columns]
75
+ # Use the order of models as they appear in the input file
76
+ input_order = grouped['MODEL'].drop_duplicates().tolist()
77
+ final_df = pivoted.reindex(input_order)
 
 
78
  final_df = final_df.fillna('OFF')
 
 
79
  final_df = final_df.reset_index()
80
+ final_df = final_df.rename(columns={'index': 'MODEL'})
81
  return final_df
82
  except Exception as e:
83
  return pd.DataFrame({"Error": [str(e)]})