Python Pandas – 인덱스 값과 PeriodArray 변환 결과 간 차이의 TimedeltaArray 계산하기
Pandas에서 DatetimeIndex의 원래 값과 PeriodArray로 변환된 인덱스 사이의 차이를 TimedeltaArray로 계산하려면 datetimeindex.to_perioddelta() 메서드를 사용합니다. 이때 freq 매개변수를 통해 주기를 지정할 수 있습니다.
라이브러리 임포트
먼저 필요한 라이브러리를 임포트합니다.
import pandas as pd
DatetimeIndex 생성
데이터 포인트는 5개, 빈도는 '2Y', 즉 2년 단위로 DatetimeIndex를 생성합니다.
datetimeindex = pd.date_range('2021-10-18 07:20:32.261811624', periods=5, freq='2Y')
생성된 DateTimeIndex를 출력해 확인합니다.
print("DateTimeIndex...\n", datetimeindex)PeriodDelta 계산
DatetimeIndex 값을 PeriodArray로 변환한 결과와의 차이를 TimedeltaArray로 계산합니다. 여기서는 "freq" 매개변수에 'M', 즉 월(Month) 단위 주기를 지정했습니다.
print("\nConvert DateTimeIndex to PeriodDelta...\n",
datetimeindex.to_perioddelta(freq='M'))예제
다음은 전체 예제 코드입니다.
import pandas as pd
# 데이터 포인트 5개, 빈도는 Y(연도) 기준 2년 단위의 DatetimeIndex 생성
datetimeindex = pd.date_range('2021-10-18 07:20:32.261811624', periods=5, freq='2Y')
# DateTimeIndex 출력
print("DateTimeIndex...\n", datetimeindex)
# DateTimeIndex의 빈도 출력
print("DateTimeIndex frequency...\n", datetimeindex.freq)
# DateTimeIndex를 Period로 변환
# "freq" 매개변수에 'M'을 지정하여 월 단위 주기 설정
print("\nConvert DateTimeIndex to Period...\n",
datetimeindex.to_period(freq='M'))
# 인덱스 값과 PeriodArray로 변환된 인덱스 간 차이의 TimedeltaArray 계산
# "freq" 매개변수에 'M'을 지정하여 Period 주기 설정
print("\nConvert DateTimeIndex to PeriodDelta...\n",
datetimeindex.to_perioddelta(freq='M'))
출력 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
DateTimeIndex... DatetimeIndex(['2021-12-31 07:20:32.261811624', '2023-12-31 07:20:32.261811624', '2025-12-31 07:20:32.261811624', '2027-12-31 07:20:32.261811624', '2029-12-31 07:20:32.261811624'], dtype='datetime64[ns]', freq='2A-DEC') DateTimeIndex frequency... <2 * YearEnds: month=12> Convert DateTimeIndex to Period... PeriodIndex(['2021-12', '2023-12', '2025-12', '2027-12', '2029-12'], dtype='period[M]') Convert DateTimeIndex to PeriodDelta... TimedeltaIndex(['30 days 07:20:32.261811624', '30 days 07:20:32.261811624', '30 days 07:20:32.261811624', '30 days 07:20:32.261811624', '30 days 07:20:32.261811624'], dtype='timedelta64[ns]', freq=None)