Skip to main content
실무 필터링은 단일 조건보다 복합 조건이 대부분입니다. 이 문서는 boolean mask와 query()를 같은 문제로 비교해 선택 기준을 정리합니다.

boolean mask 기본

# 단일 조건
mask = df["age"] >= 30
out1 = df.loc[mask]

# 복합 조건
mask2 = (df["age"] >= 30) & (df["amount"] >= 10000)
out2 = df.loc[mask2, ["name", "amount"]]

# isin / between
out3 = df.loc[df["region"].isin(["seoul", "busan"])]
out4 = df.loc[df["amount"].between(8000, 15000)]

query 활용

threshold = 10000
regions = ["seoul", "busan"]

q = df.query("age >= 30 and amount >= @threshold and region in @regions")

선택 기준

  • 컬럼명이 단순하고 조건식이 길면 query가 읽기 쉽습니다.
  • 디버깅 시 중간 mask를 눈으로 확인해야 하면 boolean mask가 유리합니다.
  • 문자열 조건(str.contains)이나 정규식은 mask가 더 직관적입니다.

문자열 조건

name_mask = df["name"].str.contains("kim|lee", regex=True, na=False)
out = df.loc[name_mask]

이어서 볼 문서