70 lines
2.1 KiB
Python
70 lines
2.1 KiB
Python
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)}")
|