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

Python Pandas – TimeDeltaIndex 객체를 초 단위 빈도로 올림(Ceil) 처리하는 방법

Pandas에서 초(second) 단위 빈도로 TimeDeltaIndex 객체에 올림(ceil) 연산을 수행하려면 TimeDeltaIndex.ceil() 메서드를 사용합니다. 이때 freq 매개변수에 'S'(초) 값을 지정하면 각 시간 델타가 가장 가까운 상위 초 단위 값으로 반올림됩니다.

1. 필요한 라이브러리 가져오기

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

import pandas as pd

2. TimeDeltaIndex 객체 생성

data 매개변수를 사용하여 timedelta 형식의 데이터를 설정한 TimeDeltaIndex 객체를 만듭니다.

tdIndex = pd.TimedeltaIndex(data =['4 day 8h 20min 35us 45ns', '+17:42:19.999999',
'9 day 3h 08:16:02.000055', '+22:35:25.000075'])

3. TimedeltaIndex 확인하기

생성된 TimeDeltaIndex를 화면에 출력해 내용을 확인합니다.

print("TimedeltaIndex...\n", tdIndex)

4. 초 빈도로 Ceil 연산 수행하기

freq 매개변수에 'S'를 지정하여 초 단위 빈도 기준으로 올림 연산을 실행합니다.

print("\nPerforming Ceil operation with seconds frequency...\n",
tdIndex.ceil(freq='S'))

전체 예제 코드

아래는 위 과정을 하나로 정리한 전체 예제입니다.

import pandas as pd

# TimeDeltaIndex 객체 생성
# data 매개변수로 timedelta 형식의 데이터를 설정합니다
tdIndex = pd.TimedeltaIndex(data =['4 day 8h 20min 35us 45ns', '+17:42:19.999999',
'9 day 3h 08:16:02.000055', '+22:35:25.000075'])

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

# TimeDelta 구성 요소(components)를 데이터프레임으로 반환
print("\nThe Dataframe of the components of TimeDeltas...\n", tdIndex.components)

# 초 단위 빈도로 Ceil 연산 수행
# 초 빈도에는 freq='S'를 사용합니다
print("\nPerforming Ceil operation with seconds frequency...\n",
tdIndex.ceil(freq='S'))

실행 결과

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

TimedeltaIndex...
TimedeltaIndex(['4 days 08:20:00.000035045', '0 days 17:42:19.999999',
'9 days 11:16:02.000055', '0 days 22:35:25.000075'],
dtype='timedelta64[ns]', freq=None)

The Dataframe of the components of TimeDeltas...
    days hours minutes seconds milliseconds microseconds nanoseconds
0     4     8      20       0            0             35           45
1     0    17      42      19          999            999            0
2     9    11      16       2            0             55            0
3     0    22      35      25            0             75            0

Performing Ceil operation with seconds frequency...
TimedeltaIndex(['4 days 08:20:01', '0 days 17:42:20', '9 days 11:16:03',
'0 days 22:35:26'],
dtype='timedelta64[ns]', freq=None)

결과를 보면 나노초·마이크로초 등 초 미만의 소수 부분이 모두 잘리고, 해당 값이 존재하는 경우 다음 초 단위로 올림된 것을 확인할 수 있습니다. 예를 들어 '4 days 08:20:00.000035045'는 초 미만 값이 있으므로 '4 days 08:20:01'로, 이미 정확히 초 단위인 값은 그대로 유지됩니다.