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

Python Pandas – TimeDeltaIndex를 분(minute) 단위로 반올림하는 방법

TimeDeltaIndex를 분 단위로 반올림하기

Pandas에서 TimeDeltaIndex를 분(minute) 빈도로 반올림하려면 TimeDeltaIndex.round() 메서드를 사용합니다. 이때 freq 매개변수에 'T'(분) 값을 지정하면 됩니다.

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

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'])

이제 분 빈도('T')를 기준으로 TimeDeltaIndex에 반올림 연산을 수행합니다.

print("\nPerforming round operation with minute frequency...\n",
tdIndex.round(freq='T'))

전체 예제 코드

아래는 위 과정을 모두 포함한 전체 코드입니다.

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 구성 요소(components)를 데이터프레임 형태로 반환
print("\nThe Dataframe of the components of TimeDeltas...\n", tdIndex.components)

# 분 빈도('T')를 기준으로 반올림 연산 수행
print("\nPerforming round operation with minute frequency...\n",
tdIndex.round(freq='T'))

실행 결과

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

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)

The Dataframe of the components of TimeDeltas...
    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

Performing round operation with minute frequency...
TimedeltaIndex(['10 days 05:02:00', '0 days 22:39:00', '2 days 07:08:00',
'0 days 21:16:00'],
dtype='timedelta64[ns]', freq=None)

결과 해석

출력 결과를 보면 각 timedelta 값이 가장 가까운 분 단위로 반올림된 것을 확인할 수 있습니다. 예를 들어 '0 days 22:39:19.999999'는 초 단위가 30초 미만이므로 '0 days 22:39:00'으로 내림되었고, '0 days 21:15:45.999999'는 초 단위가 30초 이상이므로 '0 days 21:16:00'으로 올림되었습니다. 이처럼 round() 메서드는 일반적인 사사오입(반올림) 규칙에 따라 지정한 빈도 단위로 값을 조정합니다.