Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python Pandas – 날짜 오프셋을 기준으로 시계열 데이터의 첫 번째 구간 선택하기

Pandas에서 날짜 오프셋(date offset)을 기준으로 시계열 데이터의 앞부분 구간만 선택하고 싶다면 first() 메서드를 사용하면 됩니다. 이 메서드는 지정한 기간(예: '4D'는 시작일로부터 4일)에 포함되는 행들만 반환합니다.

1단계: 날짜 인덱스 생성

먼저 pd.date_range()periods(생성할 날짜 수)와 freq(빈도) 매개변수를 사용해 날짜 인덱스를 만듭니다. 여기서는 3일 간격('3D')으로 5개의 날짜를 생성합니다.

i = pd.date_range('2021-07-15', periods=5, freq='3D')

2단계: DataFrame 생성

위에서 만든 날짜 인덱스를 적용해 DataFrame을 생성합니다.

dataFrame = pd.DataFrame({'k': [1, 2, 3, 4, 5]}, index=i)

3단계: first()로 첫 번째 구간 선택

시작일로부터 처음 4일('4D')에 해당하는 행을 가져옵니다.

dataFrame.first('4D')

전체 예제 코드

import pandas as pd

# 5개의 기간, 3일 간격 빈도로 날짜 인덱스 설정
i = pd.date_range('2021-07-15', periods=5, freq='3D')

# 위 인덱스를 사용해 DataFrame 생성
dataFrame = pd.DataFrame({'k': [1, 2, 3, 4, 5]}, index=i)
print('DataFrame...\n', dataFrame)

# 처음 4일(4D)에 해당하는 행 가져오기
print('선택된 행...\n', dataFrame.first('4D'))

실행 결과

DataFrame...
             k
2021-07-15   1
2021-07-18   2
2021-07-21   3
2021-07-24   4
2021-07-27   5
선택된 행...
             k
2021-07-15   1
2021-07-18   2

결과 해석

인덱스가 3일 간격이므로 전체 날짜는 7월 15일, 18일, 21일, 24일, 27일입니다. first('4D')는 시작일(7월 15일)부터 4일 이내, 즉 7월 19일 미만의 날짜에 해당하는 행만 반환하므로 15일과 18일 두 행이 선택됩니다.

참고로, Pandas 2.1 이상 버전에서는 first() 메서드가 더 이상 권장되지 않으므로(deprecated), 아래와 같이 불리언 인덱싱을 사용하는 것이 좋습니다.

dataFrame[dataFrame.index < '2021-07-19']