저는 아래 코드와 같이 새로운 column에 각 수업의 희망 수강생 수가 5보다 적은지를 나타내는 boolean 값을 넣어주고 status에 반영한 다음 다시 그 column을 지워주는 식으로 번거롭게 작업했는데, 질문 작성자님과 Randy님 덕분에 훨씬 편리한 메소드인 df.isin()을 배워가네요.. 감사합니다!! ### Code . import pandas as pd df = pd.read_csv('data/enrolment_1.csv')
댓글 2개
질문 작성자님과 Randy님 덕분에 훨씬 편리한 메소드인 df.isin()을 배워가네요.. 감사합니다!!
### Code
.
import pandas as pd
df = pd.read_csv('data/enrolment_1.csv')
### 코드를 작성하세요.
inform1_idx = (df['year'] == 1) & (df['course name'] == 'information technology')
commerce4_idx = (df['year'] ==4) & (df['course name'] == 'commerce')
.
.
course_counts = df['course name'].value_counts()
less5_list = list(course_counts[course_counts < 5].index)
df['less5'] = [a in less5_list for a in df['course name']]
less5_idx = df['less5'] == True
.
.
df['status'] = 'allowed'
df.loc[inform1_idx | commerce4_idx | less5_idx, 'status'] = 'not allowed'
df.drop('less5', axis='columns', inplace=True)
.
.
### 정답 출력
df
제 경우에 for문을 돌리는 것보다 질문 작성자님이 시도한 방법이 훨씬 빠르게 나왔습니다!