조건 하나만으로는 원하는 데이터가 잘 걸러지지 않는 경우가 많습니다. 상태는 완료이면서 금액은 10만 원 이상인 행만 따로 모아야 하는 식으로, 실제 업무에서는 두 가지 이상 조건을 함께 써야 할 때가 더 많습니다.
이번 글에서는 이전편의 “조건에 맞는 행 저장”에서 한 단계 더 확장해, 여러 조건을 동시에 걸어 필요한 행만 저장하는 방법을 정리해보겠습니다.
관련 글
파이썬 엑셀 조건행 추출 및 저장 자동화
엑셀 파일을 정리하다 보면 모든 데이터를 다 보는 것보다, 내가 필요한 조건에 맞는 행만 따로 뽑아 저장하고 싶은 경우가 더 많습니다. 예를 들어 거래 내역 중 특정 날짜 이후 자료만 보고 싶
heeday4753.com
조건 하나는 쉬운데 두 개부터 헷갈리는 이유가 있습니다
처음 파이썬으로 데이터를 걸러낼 때는 보통 조건 하나부터 시작합니다. 예를 들어 상태가 “완료”인 행만 찾거나, 금액이 10만 원 이상인 행만 찾는 식입니다. 여기까지는 비교적 쉽게 이해됩니다. 그런데 실제 파일을 다루다 보면 조건 하나만으로는 데이터가 너무 많이 남거나, 반대로 원하는 결과가 정확히 나오지 않는 경우가 많습니다. 그래서 결국 두 조건, 세 조건을 함께 걸어야 하는데 이 단계에서 많이 막힙니다.
가장 흔한 이유는 사람이 생각하는 조건 문장과 파이썬이 이해하는 조건식이 다르기 때문입니다. 사람은 “상태는 완료이고 금액은 10만 원 이상”이라고 자연스럽게 읽지만, 파이썬에서는 이 두 조건을 각각 따로 쓴 뒤 연결해야 합니다. 이때 and를 써야 할 것 같지만 pandas에서는 보통 &를 사용합니다. 또 각 조건을 괄호로 감싸야 해서 처음 보면 문법이 낯설게 느껴집니다. 코드 길이는 길지 않은데도 막상 실행하면 오류가 나거나 결과가 비어 있으면 괜히 더 어렵게 느껴집니다.
실무에서는 이런 다중 조건이 아주 자주 등장합니다. 주문목록에서는 상태가 완료이면서 결제금액이 일정 금액 이상인 건만 뽑아야 할 수 있습니다. 거래내역에서는 거래처가 특정 회사이고 거래일이 최근 30일인 데이터만 따로 저장해야 할 수 있습니다. 문의내역에서는 처리상태가 미완료이면서 문의 내용에 특정 단어가 포함된 행만 따로 봐야 할 수도 있습니다. 결국 조건 1개짜리 필터보다 여러 조건을 결합하는 일이 실제 업무에 훨씬 가깝습니다.
그래서 중요한 것은 복잡한 예제를 많이 보는 것이 아니라, 조건을 나누어 생각하는 습관입니다. 먼저 어떤 열을 기준으로 볼지 정하고, 그다음 각 조건을 하나씩 분리해서 작성한 뒤, 마지막에 그것들을 연결하는 흐름으로 가면 훨씬 안정적입니다. 이 순서를 익혀두면 조건이 늘어나도 덜 헷갈립니다.

상태와 금액처럼 두 조건을 함께 거는 방법은 이렇게 정리하면 됩니다
여러 조건을 동시에 걸 때는 먼저 각각의 조건을 분리해서 생각하면 편합니다. 예를 들어 주문목록 파일에서 상태가 “완료”이고 금액이 10만 원 이상인 행만 저장하고 싶다고 해보겠습니다. 이 경우 첫 번째 조건은 상태 == 완료이고, 두 번째 조건은 금액 >= 100000입니다. 그리고 이 둘을 동시에 만족해야 하므로 &로 연결하면 됩니다.
import pandas as pd
df = pd.read_excel("주문목록.xlsx")
result = df[(df["상태"] == "완료") & (df["금액"] >= 100000)]
result.to_excel("완료_10만원이상_주문목록.xlsx", index=False)
print("선택된 행 수:", len(result))
여기서 핵심은 두 가지입니다.
첫째, 각 조건을 반드시 괄호로 감싸야 합니다.
둘째, and가 아니라 &를 써야 합니다.
이 부분을 놓치면 초보자일수록 오류가 자주 납니다. 문법이 조금 낯설 뿐이지, 흐름 자체는 생각보다 단순합니다. 각각의 조건을 따로 쓰고 묶는다고 이해하면 됩니다.
여기서 한 단계 더 나아가면 “상태는 완료이고, 금액은 10만 원 이상이며, 주문일은 최근 30일”처럼 세 조건도 충분히 함께 걸 수 있습니다.
import pandas as pd
df = pd.read_excel("주문목록.xlsx")
df["주문일"] = pd.to_datetime(df["주문일"], errors="coerce")
today = pd.Timestamp.today().normalize()
start_date = today - pd.Timedelta(days=30)
result = df[
(df["상태"] == "완료") &
(df["금액"] >= 100000) &
(df["주문일"] >= start_date)
]
result.to_excel("완료_10만원이상_최근30일_주문목록.xlsx", index=False)
print("선택된 행 수:", len(result))
이렇게 조건이 늘어나도 원리는 같습니다. 상태 조건 하나, 금액 조건 하나, 날짜 조건 하나를 각각 따로 만들고 연결하는 것입니다. 실무에서는 오히려 이런 식의 조합이 더 자주 쓰입니다. 특정 거래처만 보거나, 특정 상태만 모으거나, 특정 기간만 따로 저장해야 하는 경우가 반복되기 때문입니다.
또 하나 기억해둘 점은 열 이름과 데이터 형식입니다. 금액 열이 숫자가 아니라 문자로 들어 있으면 비교가 제대로 되지 않을 수 있고, 날짜 열도 문자열이면 최근 30일 조건이 흔들릴 수 있습니다. 그래서 여러 조건을 걸기 전에는 해당 열이 숫자인지, 날짜인지, 문자열인지 먼저 확인하는 습관이 중요합니다. 조건문이 틀린 것이 아니라 데이터 형식이 달라서 결과가 어긋나는 경우가 꽤 많습니다.
여러 조건 필터는 실무 자동화의 기본이자 확장 포인트입니다
여러 조건을 동시에 거는 방법은 단순히 코드를 조금 더 길게 쓰는 기술이 아닙니다. 실제로는 사람이 엑셀에서 반복하던 필터 작업을 더 정확하게 바꾸는 과정에 가깝습니다. 상태 하나만으로는 데이터가 너무 많고, 금액 하나만으로는 의미가 부족할 때가 많기 때문에 실무에서는 조건 조합이 거의 기본처럼 쓰입니다. 한 번 익혀두면 주문목록, 거래내역, 문의내역, 정산자료, 출고리스트처럼 형식이 비슷한 파일에 그대로 응용할 수 있습니다.
작업할 때는 세 가지만 기억하면 좋습니다. 첫째, 조건은 한 문장으로 보지 말고 각각 분리해서 적습니다. 둘째, 각 조건은 괄호로 감쌉니다. 셋째, 조건을 연결할 때는 &와 |를 구분합니다. &는 그리고, |는 또는의 개념입니다. 예를 들어 완료이면서 금액이 10만 원 이상이면 &를 쓰고, 환불 또는 반품 문의를 찾고 싶다면 |를 쓰는 식입니다. 이 차이를 이해하면 이후 응용 범위가 훨씬 넓어집니다.
결국 여러 조건 필터의 핵심은 복잡한 기능이 아니라 기준을 분명하게 세우는 데 있습니다. 어떤 데이터를 남기고 싶은지 먼저 정하고, 그 기준을 코드로 하나씩 옮기면 됩니다. 직접 엑셀에서 매번 필터를 다시 걸고 복사해서 새 파일로 저장하던 작업을 줄이고 싶다면 좋은 자동화 방법입니다.
함께 보면 좋은 글
파이썬 엑셀 조건행 추출 및 저장 자동화
엑셀 파일을 정리하다 보면 모든 데이터를 다 보는 것보다, 내가 필요한 조건에 맞는 행만 따로 뽑아 저장하고 싶은 경우가 더 많습니다. 예를 들어 거래 내역 중 특정 날짜 이후 자료만 보고 싶
heeday4753.com
파이썬 날짜 조건 자동화 방법
엑셀이나 CSV 파일을 정리하다 보면 모든 데이터를 다 저장하는 것보다 최근 7일, 최근 30일, 특정 월 데이터만 따로 뽑아야 할 때가 많습니다. 거래내역, 주문목록, 문의내역처럼 날짜가 붙어 있
heeday4753.com
'엑셀 자동화' 카테고리의 다른 글
| 파이썬 엑셀 빈칸 정리법 (0) | 2026.04.06 |
|---|---|
| 파이썬 사용 엑셀에서 특정 값 포함 행 찾기 (1) | 2026.04.05 |
| 파이썬 사용 엑셀에서 날짜 조건 자동화 방법 (0) | 2026.04.05 |
| 파이썬 엑셀 조건행 추출 및 저장 자동화 (0) | 2026.04.04 |
| 파이썬 엑셀 중복 데이터 제거 방법 (0) | 2026.04.04 |