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

Python Pandas – TimeDeltaIndex를 datetime.timedelta 객체 배열(ndarray)로 변환하는 방법

Pandas에서 TimeDeltaIndexdatetime.timedelta 객체로 구성된 객체형 ndarray(object ndarray)로 변환하려면 to_pytimedelta() 메서드를 사용하면 됩니다. 이 메서드는 NumPy의 timedelta64[ns] 값을 파이썬 표준 라이브러리의 timedelta 객체 배열로 바꿔주므로, 순수 파이썬 환경에서 시간 간격을 다룰 때 매우 유용합니다.

필요한 라이브러리 임포트하기

가장 먼저 필요한 라이브러리를 임포트합니다.

import pandas as pd

TimeDeltaIndex 객체 생성하기

TimedeltaIndex 객체를 생성합니다. data 매개변수에 timedelta 형식으로 해석 가능한 문자열 데이터를 전달합니다.

tdIndex = pd.TimedeltaIndex(data=['10 day 5h 2 min 3us 10ns', '+22:39:19.999999',
'2 day 4h 03:08:02.000045', '+21:15:45.999999'])

TimeDeltaIndex를 객체 ndarray로 변환하기

이제 to_pytimedelta() 메서드를 호출하여 TimeDeltaIndex를 datetime.timedelta 객체의 ndarray로 변환하고 결과를 출력합니다.

print("\nTimeDeltaIndex를 datetime.timedelta 객체의 ndarray로 반환...\n",
tdIndex.to_pytimedelta())

이 메서드는 별도의 인자를 받지 않으며, 각 원소가 datetime.timedelta 타입인 NumPy 배열(dtype=object)을 반환한다는 점을 기억하세요.

전체 예제 코드

아래는 지금까지의 과정을 하나로 정리한 완전한 코드입니다.

import pandas as pd

# TimedeltaIndex 객체 생성
# 'data' 매개변수에 timedelta 형식의 데이터를 설정했습니다.
tdIndex = pd.TimedeltaIndex(data=['10 day 5h 2 min 3us 10ns', '+22:39:19.999999',
'2 day 4h 03:08:02.000045', '+21:15:45.999999'])

# TimedeltaIndex 출력
print("TimedeltaIndex...\n", tdIndex)

# TimeDelta의 구성 요소(일, 시간, 분, 초 등)를 데이터프레임으로 반환
print("\nTimeDelta 구성 요소 데이터프레임...\n", tdIndex.components)

# TimeDeltaIndex를 datetime.timedelta 객체의 ndarray로 반환
print("\nTimeDeltaIndex를 datetime.timedelta 객체의 ndarray로 반환...\n",
tdIndex.to_pytimedelta())

실행 결과

위 코드를 실행하면 다음과 같은 출력을 얻을 수 있습니다.

TimedeltaIndex...
TimedeltaIndex(['10 days 05:02:00.000003010', '0 days 22:39:19.999999',
'2 days 07:08:02.000045', '0 days 21:15:45.999999'],
dtype='timedelta64[ns]', freq=None)

TimeDelta 구성 요소 데이터프레임...
  days hours minutes seconds milliseconds microseconds nanoseconds
0 10     5     2      0       0            3            10
1 0      22    39     19      999          999          0
2 2      7     8      2       0            45           0
3 0      21    15     45      999          999          0

TimeDeltaIndex를 datetime.timedelta 객체의 ndarray로 반환...
[datetime.timedelta(days=10, seconds=18120, microseconds=3)
datetime.timedelta(seconds=81559, microseconds=999999)
datetime.timedelta(days=2, seconds=25682, microseconds=45)
datetime.timedelta(seconds=76545, microseconds=999999)]

정리

to_pytimedelta()는 Pandas의 고성능 timedelta64 연산과 파이썬 표준 timedelta 객체 사이를 잇는 편리한 다리 역할을 합니다. 출력 결과에서 확인할 수 있듯이, 일(days), 초(seconds), 마이크로초(microseconds) 단위의 값들이 파이썬 기본 timedelta 객체로 정확하게 변환되어 반환됩니다. 반대 방향의 변환이 필요하다면 pd.to_timedelta() 함수를 사용할 수 있습니다.