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

Python Pandas – DateTimeIndex를 시간대(TimeZone) 없이 Series로 변환하는 방법

Pandas에서 DateTimeIndex를 시간대(TimeZone) 정보를 제외한 상태로 Series로 변환하려면 datetimeindex.tz_convert(None).to_series() 메서드를 사용합니다. 여기서 tz_convert(None)은 인덱스에 설정된 시간대 정보를 제거하는 역할을 합니다.

1. 필요한 라이브러리 임포트

먼저 pandas 라이브러리를 임포트합니다.

import pandas as pd

2. DateTimeIndex 생성

시작 시점을 지정하고, 주기(periods)는 5개, 빈도(freq)는 초 단위인 '40S'로 설정하여 DateTimeIndex를 생성합니다. 이때 시간대는 'Australia/Adelaide'로 지정합니다.

datetimeindex = pd.date_range('2021-10-18 07:20:32.261811624', periods=5,
tz='Australia/Adelaide', freq='40S')

3. DateTimeIndex 출력

생성된 DateTimeIndex를 화면에 출력해 확인합니다.

print("DateTimeIndex...\n", datetimeindex)

4. 시간대를 제외한 Series로 변환

tz_convert() 메서드의 인자를 None으로 설정하면 시간대 정보가 제거됩니다. 이후 to_series()를 호출하면 DateTimeIndex가 Series 객체로 변환됩니다.

print("\nDateTimeIndex to series excluding the TimeZone...\n",
datetimeindex.tz_convert(None).to_series())

전체 예제 코드

지금까지 설명한 내용을 하나의 코드로 정리하면 다음과 같습니다.

import pandas as pd

# 주기 5개, 빈도는 초 단위(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의 빈도(freq) 출력
print("DateTimeIndex frequency...\n", datetimeindex.freq)

# tz_convert()의 인자를 None으로 설정하여 시간대를 제외한 후 Series로 변환
print("\nDateTimeIndex to series excluding the TimeZone...\n",
datetimeindex.tz_convert(None).to_series())

실행 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

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>

DateTimeIndex to series excluding the TimeZone...
2021-10-17 20:50:32.261811624 2021-10-17 20:50:32.261811624
2021-10-17 20:51:12.261811624 2021-10-17 20:51:12.261811624
2021-10-17 20:51:52.261811624 2021-10-17 20:51:52.261811624
2021-10-17 20:52:32.261811624 2021-10-17 20:52:32.261811624
2021-10-17 20:53:12.261811624 2021-10-17 20:53:12.261811624
Freq: 40S, dtype: datetime64[ns]

정리

출력 결과를 보면 원래 DateTimeIndex에는 '+10:30' 형태의 시간대 오프셋이 포함되어 있지만, tz_convert(None)을 적용한 후에는 UTC 기준 시간으로 변환되면서 시간대 정보가 완전히 제거된 것을 확인할 수 있습니다. dtype 역시 'datetime64[ns, Australia/Adelaide]'에서 단순한 'datetime64[ns]'로 변경됩니다. 이처럼 tz_convert(None)과 to_series()를 조합하면 시간대 정보가 없는 깔끔한 Series 데이터를 손쉽게 얻을 수 있습니다.