Pandas에서 시간대(timezone) 정보가 포함된 datetime.time 객체로 구성된 NumPy 배열을 반환하려면 DatetimeIndex의 timetz 속성을 사용하면 됩니다. 이 속성은 Timestamp에서 날짜를 제외한 시간 부분만 추출하면서, 해당 값에 적용된 시간대 정보까지 함께 유지해 줍니다.
필수 라이브러리 임포트
먼저 필요한 라이브러리를 임포트합니다.
import pandas as pd
DatetimeIndex 생성
pd.date_range()를 사용하여 시작 시점부터 총 5개의 요소를 가지는 DatetimeIndex를 생성합니다. 이때 주파수(freq)를 'ns', 즉 나노초(nanosecond) 단위로 지정하고, 시간대는 'Australia/Sydney'로 설정합니다.
datetimeindex = pd.date_range('2021-10-20 02:30:50', periods=5, tz='Australia/Sydney', freq='ns')
생성된 DatetimeIndex를 화면에 출력해 확인해 보겠습니다.
print("DateTimeIndex...\n", datetimeindex)
이어서 timetz 속성을 호출하면, 시간대 정보가 포함된 시간(time) 부분만 담고 있는 NumPy 배열을 얻을 수 있습니다.
print("\nThe numpy array (time part with timezone)..\n", datetimeindex.timetz)
전체 예제 코드
import pandas as pd
# 총 5개의 요소, 주파수는 나노초(ns) 단위
# 시간대는 호주/시드니(Australia/Sydney)로 설정
datetimeindex = pd.date_range('2021-10-20 02:30:50', periods=5, tz='Australia/Sydney', freq='ns')
# DateTimeIndex 출력
print("DateTimeIndex...\n", datetimeindex)
# 시간대 정보가 포함된 시간(time) 부분만 NumPy 배열로 반환
print("\nThe numpy array (time part with timezone)..\n", datetimeindex.timetz)
실행 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
DateTimeIndex... DatetimeIndex([ '2021-10-20 02:30:50+11:00', '2021-10-20 02:30:50.000000001+11:00', '2021-10-20 02:30:50.000000002+11:00', '2021-10-20 02:30:50.000000003+11:00', '2021-10-20 02:30:50.000000004+11:00'], dtype='datetime64[ns, Australia/Sydney]', freq='N') The numpy array (time part with timezone).. [datetime.time(2, 30, 50, tzinfo=<DstTzInfo 'Australia/Sydney' AEDT+11:00:00 DST>) datetime.time(2, 30, 50, tzinfo=<DstTzInfo 'Australia/Sydney' AEDT+11:00:00 DST>) datetime.time(2, 30, 50, tzinfo=<DstTzInfo 'Australia/Sydney' AEDT+11:00:00 DST>) datetime.time(2, 30, 50, tzinfo=<DstTzInfo 'Australia/Sydney' AEDT+11:00:00 DST>) datetime.time(2, 30, 50, tzinfo=<DstTzInfo 'Australia/Sydney' AEDT+11:00:00 DST>)]
정리
timetz 속성은 각 Timestamp에서 연·월·일 정보를 제거한 시간 값만 추출하며, 결과는 Python 표준 라이브러리의 datetime.time 객체들로 구성된 NumPy 배열입니다. 출력 결과에서 볼 수 있듯이 tzinfo에 Australia/Sydney(AEDT, UTC+11) 시간대 정보가 그대로 유지되므로, 여러 시간대를 다루는 데이터 분석 작업에서도 시간 정보를 안전하게 활용할 수 있습니다.