Pandas DataFrame에서 두 날짜 사이에 해당하는 행만 추출하고 싶다면 dataframe.loc 속성과 비교 연산자를 조합하면 됩니다. 먼저 필요한 라이브러리를 임포트합니다.
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-02-19', '2021-08-22']
}위 딕셔너리를 이용해 DataFrame을 생성합니다.
dataFrame = pd.DataFrame(d)이제 두 날짜, 즉 시작일 2021-05-10부터 종료일 2021-08-25 사이에 구매된 차량만 조회해 보겠습니다.
resDF = dataFrame.loc[(dataFrame["Date_of_Purchase"] >= "2021-05-10") & (dataFrame["Date_of_Purchase"] <= "2021-08-25")]전체 예제 코드
아래는 지금까지 설명한 내용을 모두 담은 전체 코드입니다.
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-02-19', '2021-08-22']
}
# 딕셔너리로 DataFrame 생성
dataFrame = pd.DataFrame(d)
print("DataFrame...\n", dataFrame)
# 두 날짜 사이에 구매한 차량 조회
# 첫 번째 날짜: 2021-05-10
# 두 번째 날짜: 2021-08-25
resDF = dataFrame.loc[(dataFrame["Date_of_Purchase"] >= "2021-05-10") & (dataFrame["Date_of_Purchase"] <= "2021-08-25")]
# 필터링된 DataFrame 출력
print("\n두 날짜 사이에 구매한 차량:\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-02-19
5 Bentley 2021-08-22
두 날짜 사이에 구매한 차량:
Car Date_of_Purchase
0 BMW 2021-07-10
1 Lexus 2021-08-12
2 Audi 2021-06-17
5 Bentley 2021-08-22추가 팁: 날짜 비교 시 주의사항
날짜 문자열이 'YYYY-MM-DD' 형식이라면 문자열 그대로 비교해도 사전순 정렬과 날짜순 정렬이 일치하므로 올바르게 동작합니다. 하지만 서로 다른 날짜 형식이 섞여 있는 데이터라면 pd.to_datetime()으로 해당 열을 datetime 타입으로 변환한 뒤 필터링하는 것이 안전합니다.
# Date_of_Purchase 열을 datetime 타입으로 변환
dataFrame['Date_of_Purchase'] = pd.to_datetime(dataFrame['Date_of_Purchase'])
# 마스크(mask)를 만들어 필터링
mask = (dataFrame['Date_of_Purchase'] >= '2021-05-10') & (dataFrame['Date_of_Purchase'] <= '2021-08-25')
resDF = dataFrame.loc[mask]