문제 소개
pandas DataFrame에서 'A' 학점을 받은 학생의 이름만 골라내는 작업은 데이터 분석에서 가장 기본적이면서도 자주 사용되는 필터링 기법입니다. 이 글에서는 불리언 인덱싱(Boolean Indexing)을 활용해 조건에 맞는 행을 추출하고, 그중 원하는 열(Name)만 선택하는 방법을 단계별로 살펴봅니다.
입력 −
다음과 같은 DataFrame이 있다고 가정합니다. Id Name Grade 0 1 stud1 A 1 2 stud2 B 2 3 stud3 C 3 4 stud4 A 4 5 stud5 A
출력 −
'A' 학점 학생의 이름 결과는 다음과 같습니다.
0 stud1 3 stud4 4 stud5
해결 방법
이 문제는 아래와 같은 접근 방식으로 해결할 수 있습니다.
DataFrame을 정의합니다.
DataFrame의 값과 조건('A')을 비교합니다.
df[df['Grade']=='A']
비교 결과를 새로운 DataFrame에 저장한 뒤, 그중 Name 열만 가져옵니다.
예제 코드
아래 예제를 직접 실행해 보면 전체 동작 과정을 더 쉽게 이해할 수 있습니다.
import pandas as pd
data = [[1,'stud1','A'],[2,'stud2','B'],[3,'stud3','C'],[4,'stud4','A'],[5,'stud5','A']]
df = pd.DataFrame(data,columns=('Id','Name','Grade'))
print("DataFrame is\n",df)
print("find the A grade students name\n")
result = df[df['Grade']=='A']
print(result['Name'])실행 결과
DataFrame is Id Name Grade 0 1 stud1 A 1 2 stud2 B 2 3 stud3 C 3 4 stud4 A 4 5 stud5 A find the A grade students name 0 stud1 3 stud4 4 stud5 Name: Name, dtype: object
코드 설명
핵심은 df[df['Grade']=='A'] 부분입니다. df['Grade']=='A'는 각 행의 Grade 값이 'A'인지 여부를 True/False로 담고 있는 불리언 Series를 반환합니다. 이 Series를 대괄호 연산자 안에 넣으면 True에 해당하는 행만 걸러지며, 최종적으로 result['Name']을 통해 필터링된 결과에서 Name 열만 선택해 학생 이름을 출력하게 됩니다. 이처럼 불리언 인덱싱을 익혀 두면 성적, 나이, 지역 등 다양한 조건의 데이터 필터링에 그대로 응용할 수 있습니다.