개요
Pandas에서 DateTimeIndex.ceil() 메서드를 사용하면 날짜·시간 인덱스(DatetimeIndex)의 각 타임스탬프를 지정한 빈도 단위로 올림(ceil) 처리할 수 있습니다. 마이크로초(microseconds) 빈도로 올림하려면 freq 매개변수에 'us' 값을 전달하면 됩니다.
구현 단계
먼저 필요한 라이브러리를 임포트합니다.
import pandas as pd
기간(periods)은 5, 빈도는 40초('40S')로 설정하여 DatetimeIndex를 생성합니다. 시간대는 호주 애들레이드(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)
이제 마이크로초 빈도로 ceil 연산을 수행합니다. 마이크로초 빈도에는 'us'를 사용합니다.
print("\nPerforming ceil operation with microseconds frequency...\n",
datetimeindex.ceil(freq='us'))
전체 예제 코드
import pandas as pd
# 기간 5, 빈도 40초('40S')인 DatetimeIndex 생성
# 시간대는 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)
# 마이크로초 빈도('us')로 ceil 연산 수행
print("\nPerforming ceil operation with microseconds frequency...\n",
datetimeindex.ceil(freq='us'))
실행 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
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>
Performing ceil operation with microseconds frequency...
DatetimeIndex(['2021-10-18 07:20:32.261812+10:30',
'2021-10-18 07:21:12.261812+10:30',
'2021-10-18 07:21:52.261812+10:30',
'2021-10-18 07:22:32.261812+10:30',
'2021-10-18 07:23:12.261812+10:30'],
dtype='datetime64[ns, Australia/Adelaide]', freq=None)
결과 해설
원본 타임스탬프는 나노초까지 표현된 값입니다(예: .261811624). 여기에 ceil(freq='us')를 적용하면 가장 가까운 마이크로초 단위로 올림되어 .261812가 됩니다. 즉, 마이크로초보다 세밀한 나노초 자릿수가 올림 처리된 것입니다. 또한 ceil 연산을 수행한 결과 인덱스에는 기존의 40초 빈도 정보가 유지되지 않아 freq=None으로 표시됩니다.