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

Python Pandas – TimeDeltaIndex 객체에 밀리초 빈도로 ceil 연산 수행하기

Pandas의 TimeDeltaIndex.ceil() 메서드를 사용하면 밀리초 빈도를 기준으로 TimeDeltaIndex 객체의 시간 값들을 올림(ceil) 처리할 수 있습니다. 밀리초 빈도를 지정하려면 freq 매개변수에 'ms' 값을 전달하면 됩니다.

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 매개변수에 'ms'를 사용합니다.

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

전체 예제 코드

지금까지 설명한 내용을 하나로 합친 전체 코드는 다음과 같습니다.

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 연산 수행
# 밀리초 빈도에는 'ms' 사용
print("\nPerforming Ceil operation with milliseconds frequency...\n",
tdIndex.ceil(freq='ms'))

실행 결과

위 코드를 실행하면 다음과 같은 출력이 생성됩니다.

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 milliseconds frequency...
TimedeltaIndex(['4 days 08:20:00.001000', '0 days 17:42:20',
'9 days 11:16:02.001000', '0 days 22:35:25.001000'],
dtype='timedelta64[ns]', freq=None)

출력 결과를 보면 각 시간 값이 가장 가까운 밀리초 단위로 올림 처리된 것을 확인할 수 있습니다. 예를 들어 '0 days 17:42:19.999999'는 밀리초 단위로 올림되어 '0 days 17:42:20'이 되었습니다.