loc 속성에 날짜 조건을 설정하면 특정 시간(날짜)을 기준으로 DataFrame의 레코드를 간단하게 필터링할 수 있습니다. 이번 글에서는 구매일자가 특정 날짜 이후인 자동차 데이터만 추출하는 예제를 단계별로 살펴보겠습니다.
1. 라이브러리 임포트
먼저 필요한 라이브러리를 임포트합니다.
import pandas as pd
2. 데이터 준비 및 DataFrame 생성
날짜 정보가 포함된 딕셔너리 형태의 리스트를 생성합니다.
d = {'Car': ['BMW', 'Lexus', 'Audi', 'Mercedes', 'Jaguar', 'Bentley'],
'Date_of_Purchase': ['2021-07-10', '2021-08-12', '2021-06-17',
'2021-03-16', '2021-05-19', '2021-08-22']
}
위 딕셔너리를 사용해 DataFrame을 만듭니다.
dataFrame = pd.DataFrame(d)
3. loc으로 날짜 조건 필터링
예를 들어 2021년 7월 15일 이후에 구매한 자동차 데이터만 가져오고 싶다면, loc 안에 비교 조건을 지정하면 됩니다.
resDF = dataFrame.loc[dataFrame["Date_of_Purchase"] > "2021-07-15"]
전체 예제 코드
지금까지의 내용을 하나로 합친 전체 코드는 다음과 같습니다.
import pandas as pd
# 리스트로 구성된 딕셔너리 생성
d = {'Car': ['BMW', 'Lexus', 'Audi', 'Mercedes', 'Jaguar', 'Bentley'],
'Date_of_Purchase': ['2021-07-10', '2021-08-12', '2021-06-17',
'2021-03-16', '2021-05-19', '2021-08-22']
}
# 딕셔너리로 DataFrame 생성
dataFrame = pd.DataFrame(d)
print("DataFrame...\n", dataFrame)
# 2021년 7월 15일 이후에 구매한 자동차 조회
resDF = dataFrame.loc[dataFrame["Date_of_Purchase"] > "2021-07-15"]
# 필터링된 DataFrame 출력
print("\n2021년 7월 15일 이후 구매한 자동차:\n", resDF)
실행 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
DataFrame...
Car Date_of_Purchase
0 BMW 2021-07-10
1 Lexus 2021-08-12
2 Audi 2021-06-17
3 Mercedes 2021-03-16
4 Jaguar 2021-05-19
5 Bentley 2021-08-22
2021년 7월 15일 이후 구매한 자동차:
Car Date_of_Purchase
1 Lexus 2021-08-12
5 Bentley 2021-08-22
추가 팁: datetime 타입 변환 활용하기
날짜 문자열이 'YYYY-MM-DD' 형식이라면 위처럼 문자열 비교만으로도 올바른 결과를 얻을 수 있습니다. 다만 더 안전하고 유연한 날짜 처리를 위해서는 pd.to_datetime()으로 해당 열을 datetime 타입으로 변환한 뒤 비교하는 것이 좋습니다.
dataFrame["Date_of_Purchase"] = pd.to_datetime(dataFrame["Date_of_Purchase"]) resDF = dataFrame.loc[dataFrame["Date_of_Purchase"] > "2021-07-15"]
이렇게 하면 월·일 단위 범위 검색, 날짜 연산 등 훨씬 다양한 시간 기반 필터링 작업도 손쉽게 수행할 수 있습니다.