import pandas as pd

# 1번
student_list = [{'이름' : '김현우', '단과대' : '소융대', '학번' : 23},
                {'이름' : '박민서', '단과대' : '소융대', '학번' : 21},
                {'이름' : '박민지', '단과대' : '소융대', '학번' : 22},
                {'이름' : '이준희', '단과대' : '소융대', '학번' : 20},
                {'이름' : '전준호', '단과대' : '생과대', '학번' : 21},
                {'이름' : '최윤제', '단과대' : '소융대', '학번' : None},
                {'이름' : '박민서', '단과대' : '자연대', '학번' : 22}]

columns = ['이름', '단과대', '학번']
df = pd.DataFrame(student_list, columns=columns)

# 2번: 중복된 이름 중 처음으로 나오는 값을 유지하고 중복 제거
df = df.drop_duplicates(subset='이름', keep='first')

# 3번: 소융대 학생 중 NaN(누락된 값)을 해당 대학의 가장 낮은 학번으로 채움
df['학번'] = df['학번'].fillna(df.groupby('단과대')['학번'].transform('min'))

# 4번: 학번을 이용하여 나이를 계산하는 함수 작성
def calculate_age(student_id):
    # 20살을 기준으로 학번으로 나이 계산
    return 20 - student_id

# 5번: apply를 사용하여 각 학생의 나이를 계산하고 '나이' 열 추가
df['나이'] = df['학번'].apply(calculate_age)

# 결과 출력
print(df)