import pandas as pd # Baca CSV df = pd.read_csv(r'c:\Users\syifa\TA-PROJEK\Data_Tracerstudy\Data_2019_Tracer_study.csv', sep=';', encoding='utf-8-sig') source_cols = list(df.columns) # Simulasi get_year_mapping tracer_mapping = { 'email': ['emailmsmh', 'Email', '6. Alamat Email / emailmsmh'], 'kode_pt': ['kdptimsmh', 'Kode PT'], 'nama_perusahaan': ['F5b', 'f5b'], 'jumlah_perusahaan': ['F1102', 'f1102'], 'jabatan': ['F5c', 'f5c'], } def normalize(col_name): if pd.isna(col_name): return '' return str(col_name).strip().lower() def find_column(source_cols, possible_names): source_cols_lower = {normalize(c): c for c in source_cols} print(f" source_cols_lower keys: {list(source_cols_lower.keys())[:15]}...") for name in possible_names: normalized = normalize(name) print(f" Looking for '{normalized}' in source_cols_lower...") if normalized in source_cols_lower: return source_cols_lower[normalized] return None def get_val(mapping_dict, key, default=None): cols = mapping_dict.get(key, []) col = find_column(source_cols, cols) print(f" get_val({key}): found_col='{col}'") if col and pd.notna(row.get(col)): val = row[col] if isinstance(val, (int, float)): return int(val) if val == int(val) else val return str(val).strip() return default # Test baris pertama row = df.iloc[0] print('='*60) print('DEBUG IMPORT BARIS PERTAMA') print('='*60) print(f'NIM: {row["NIM/Nomor Mahasiswa"]}') print(f'Nama: {row["Nama"]}') print(f'Email: {row["Email"]}') print() print('SOURCE COLS (10 pertama):', source_cols[:15]) print() print('='*60) print('CEK find_column') print('='*60) for field, cols in tracer_mapping.items(): found = find_column(source_cols, cols) print(f" RESULT: {field}: cols={cols} -> found='{found}'") print() print('='*60) print('CEK get_val (nama_perusahaan, jabatan)') print('='*60) nama_perusahaan = get_val(tracer_mapping, 'nama_perusahaan') jabatan = get_val(tracer_mapping, 'jabatan') print(f" nama_perusahaan = {repr(nama_perusahaan)}") print(f" jabatan = {repr(jabatan)}")