Pandas에서 DateTimeIndex에 대해 분(minute) 단위 빈도로 내림(floor) 연산을 수행하려면 DateTimeIndex.floor() 메서드를 사용합니다. 이때 freq 매개변수에 'T'(분) 값을 지정하면 됩니다.
참고로 pandas 2.2 이상 버전에서는 'T' 별칭이 더 이상 사용되지 않으므로(deprecated), 대신 'min'을 사용하는 것이 권장됩니다.
구현 단계
1. 필요한 라이브러리 임포트
import pandas as pd
2. DatetimeIndex 생성
시작 시점 '2021-10-18 07:20:32.261811624'부터 5개의 타임스탬프를 생성하고, 빈도는 40초('40S'), 시간대는 호주 애들레이드(Australia/Adelaide)로 설정합니다.
datetimeindex = pd.date_range('2021-10-18 07:20:32.261811624', periods=5,
tz='Australia/Adelaide', freq='40S')
3. DateTimeIndex 출력
print("DateTimeIndex...\n", datetimeindex)
4. 분 단위 빈도로 floor 연산 수행
freq 매개변수에 'T'(분)를 지정하면 각 타임스탬프가 해당 분의 시작 지점(초 이하 제거)으로 내려갑니다.
print("\nPerforming floor operation with minute frequency...\n",
datetimeindex.floor(freq='T'))
전체 예제 코드
import pandas as pd
# 5개의 타임스탬프, 빈도 40초, 시간대 Australia/Adelaide
datetimeindex = pd.date_range('2021-10-18 07:20:32.261811624', periods=5,
tz='Australia/Adelaide', freq='40S')
# DateTimeIndex 출력
print("DateTimeIndex...\n", datetimeindex)
# DateTimeIndex 빈도 출력
print("DateTimeIndex frequency...\n", datetimeindex.freq)
# 분(minute) 값 추출
res = datetimeindex.minute
# 분만 출력
print("\nThe minute from DateTimeIndex...\n", res)
# 분 단위 빈도로 floor 연산 수행 ('T' 사용)
print("\nPerforming floor operation with minute frequency...\n",
datetimeindex.floor(freq='T'))
실행 결과
DateTimeIndex...
DatetimeIndex(['2021-10-18 07:20:32.261811624+10:30',
'2021-10-18 07:21:12.261811624+10:30',
'2021-10-18 07:21:52.261811624+10:30',
'2021-10-18 07:22:32.261811624+10:30',
'2021-10-18 07:23:12.261811624+10:30'],
dtype='datetime64[ns, Australia/Adelaide]', freq='40S')
DateTimeIndex frequency...
<40 * Seconds>
The minute from DateTimeIndex...
Int64Index([20, 21, 21, 22, 23], dtype='int64')
Performing floor operation with minute frequency...
DatetimeIndex(['2021-10-18 07:20:00+10:30', '2021-10-18 07:21:00+10:30',
'2021-10-18 07:21:00+10:30', '2021-10-18 07:22:00+10:30',
'2021-10-18 07:23:00+10:30'],
dtype='datetime64[ns, Australia/Adelaide]', freq=None)
결과 해석
floor 연산 결과에서 초와 나노초가 잘리고 각 타임스탬프가 해당 분의 시작(00초)으로 내려간 것을 확인할 수 있습니다. 예를 들어 07:20:32.261...은 07:20:00으로, 07:21:12.261...은 07:21:00으로 변환되었습니다. 또한 floor 연산 후에는 원래의 40초 빈도(freq='40S') 정보가 유지되지 않고 freq=None으로 표시된다는 점도 참고하세요.