PROGRESS
9 / 12
단원
넘파이(NumPy) 기초 13
데이터프레임 생성과 편집 9
데이터 탐색과 필터링 12
데이터 집계와 통계 13
데이터 시각화(matplotlib) 10
파일 입출력(CSV, Excel, JSON) 10
전체 목록
QUESTION 09 #297
데이터프레임에서 두 가지 조건을 모두 만족(AND)하는 데이터를 추출하고자 합니다. 빈칸에 알맞은 기호를 적으세요.
main.py
import pandas as pd
movie = pd.DataFrame({
'제목': ['범죄도시', '엘리멘탈', '기생충', '슬램덩크', '탑건'],
'평점': [8.2, 9.3, 9.1, 9.5, 8.8],
'시간(분)': [105, 101, 132, 124, 130]
})
# 평점 9.0 초과 그리고(AND) 시간 110분 이하
movie2 = movie[(['평점'] > 9.0) & (['시간(분)'] <= 110)]
print(movie2[['제목', '평점']])
HINT
힌트: 파이썬의 'and' 대신 판다스에서 각 행을 하나씩 비교할 때 사용하는 기호는 &입니다.
실행 결과 예시
제목 평점 1 엘리멘탈 9.3
INTERACTIVE SHELL
Shift + Enter 로 즉시 실행
& 연산자 - 두 조건을 동시에 만족하는 데이터 추출
판다스에서 두 가지 이상의 조건을 동시에 적용할 때 & 연산자를 사용합니다.
기본 문법
df[(조건1) & (조건2)]
코드 분석
movie2 = movie[(movie['평점'] > 9.0) & (movie['시간(분)'] <= 110)]
조건1: 평점이 9.0 초과
조건2: 시간이 110분 이하
&: 두 조건을 모두 만족
동작 과정
| 제목 | 평점 | 시간 | 평점 > 9.0 | 시간 <= 110 | 둘 다 만족? |
|---|---|---|---|---|---|
| 범죄도시 | 8.2 | 105 | False | True | False |
| 엘리멘탈 | 9.3 | 101 | True | True | True ✅ |
| 기생충 | 9.1 | 132 | True | False | False |
| 사랑메모 | 9.5 | 124 | True | False | False |
| 한건 | 8.8 | 130 | False | False | False |
결과: 엘리멘탈만 두 조건을 모두 만족!
괄호가 반드시 필요한 이유
# ❌ 오류 발생! (& 가 >= 보다 우선순위가 높음)
df[movie['평점'] > 9.0 & movie['시간(분)'] <= 110]
# ✅ 각 조건을 괄호로 감싸야 함
df[(movie['평점'] > 9.0) & (movie['시간(분)'] <= 110)]
and vs & 차이
| 비교 | and |
& |
|---|---|---|
| 용도 | 일반 파이썬 조건문 | 판다스 데이터프레임 |
| 비교 방식 | 단일 True/False | 행별 True/False |
| 사용 예 | if a > 5 and b < 10: |
df[(조건1) & (조건2)] |
OR 조건: | 연산자
# 평점 9.0 초과 또는 시간 110분 이하
df[(movie['평점'] > 9.0) | (movie['시간(분)'] <= 110)]
| 연산자 | 의미 | 파이썬 대응 |
|---|---|---|
& |
AND (그리고) | and |
| |
OR (또는) | or |
~ |
NOT (부정) | not |
💡 핵심: 판다스에서 여러 조건을 결합할 때는
&(AND),|(OR)을 사용하고, 각 조건을 반드시 괄호로 감싸세요.