랭귀지/pandas
CASE WHEN 과 np.where 비교
유키공
2024. 12. 20. 08:25
sql case when
SELECT 이름,
성적,
출석률,
CASE
WHEN 성적 >= 90 AND 출석률 >= 90 THEN 'A'
WHEN 성적 >= 80 AND 출석률 >= 80 THEN 'B'
WHEN 성적 >= 70 AND 출석률 >= 70 THEN 'C'
WHEN 성적 >= 60 AND 출석률 >= 60 THEN 'D'
ELSE 'F'
END AS 등급
FROM 학생;
np.where
import pandas as pd
import numpy as np
# 샘플 DataFrame 생성
data = {
'이름': ['학생1', '학생2', '학생3', '학생4', '학생5'],
'성적': [95, 82, 67, 54, 73],
'출석률': [95, 80, 70, 50, 60]
}
df = pd.DataFrame(data)
# np.where를 사용하여 조건에 따른 등급 부여
df['등급'] = np.where((df['성적'] >= 90) & (df['출석률'] >= 90), 'A',
np.where((df['성적'] >= 80) & (df['출석률'] >= 80), 'B',
np.where((df['성적'] >= 70) & (df['출석률'] >= 70), 'C',
np.where((df['성적'] >= 60) & (df['출석률'] >= 60), 'D', 'F'))))
print(df)