import pandas as pd import re # Read the Excel file input_file = 'mcm04 very last.xlsx' df = pd.read_excel(input_file) # Prepare output rows output_rows = [] io_columns = [f'IO{i}' for i in range(16)] # First pass: collect all prefixes with JR1_PB (JAM RESET PUSHBUTTON) jam_reset_prefixes = set() for _, row in df.iterrows(): for io_col in io_columns: val = row.get(io_col, '') if pd.isna(val) or val == '': continue if 'JR1_PB' in str(val): m = re.match(r'(S\d+)_', str(val)) if m: jam_reset_prefixes.add(m.group(1)) # Second pass: build output with DESB logic def get_prefix(tag): m = re.match(r'(S\d+)_', str(tag)) return m.group(1) if m else None def get_desb(desca): if desca == 'SPARE' or pd.isna(desca) or desca == '': return '' tag = str(desca) prefix = get_prefix(tag) if 'BCN1_A' in tag: return 'AMBER BEACON LIGHT' if 'BCN1_B' in tag: return 'BLUE BEACON LIGHT' if 'BCN1' in tag: if prefix in jam_reset_prefixes: return '3 STACK IOLINK BEACON' else: return '2 STACK IOLINK BEACON' if 'SOL' in tag: return 'PKG RELEASE SOLENOID' if 'PR' in tag: return 'PKG RELEASE PUSHBUTTON' if 'PE1' in tag: return 'FULL PHOTOEYE 50%' if 'PE2' in tag: return 'FULL PHOTOEYE 100%' if 'GS1_PB_LT' in tag or 'GS1_PB' in tag: return 'CHUTE ENABLE PUSHBUTTON LIGHT' if 'JR1_PB_LT' in tag: return 'SORTER JAM RESET PUSHBUTTON LIGHT' if 'JR1_PB' in tag: return 'SORTER JAM RESET PUSHBUTTON' if 'FIOH' in tag: return 'HUB ARMOR BLOCK' return '' for _, row in df.iterrows(): tagname = row['P_TAG1'] for io_col in io_columns: term = io_col desca = row.get(io_col, '') if pd.isna(desca) or desca == '': desca = 'SPARE' desb = get_desb(desca) output_rows.append({'TAGNAME': tagname, 'TERM': term, 'DESCA': desca, 'DESB': desb}) # Output to CSV output_df = pd.DataFrame(output_rows) output_df.to_csv('MCM04_IO_EXPANDED.csv', index=False) print('Output written to MCM04_IO_EXPANDED.csv')