Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Python Pandas: Thực hiện ceil operation trên TimeDeltaIndex với tần suất microseconds

Phương thức TimeDeltaIndex.ceil() trong Pandas làm tròn lên (ceiling) các giá trị TimeDeltaIndex đến tần suất chỉ định. Với tần suất microseconds, sử dụng freq='us'.

Các bước thực hiện

1. Import thư viện

import pandas as pd

2. Tạo 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. Hiển thị TimeDeltaIndex

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

4. Ceil với tần suất microseconds

print("\nCeil operation với microseconds frequency...\n", tdIndex.ceil(freq='us'))

Ví dụ hoàn chỉnh

import pandas as pd

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'
])
print("TimedeltaIndex...\n", tdIndex)
print("\nDataframe các thành phần TimeDeltas...\n", tdIndex.components)
print("\nCeil operation với microseconds frequency...\n", tdIndex.ceil(freq='us'))

Kết quả đầu ra

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)
Dataframe các thành phần 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
Ceil operation với microseconds frequency...
TimedeltaIndex(['4 days 08:20:00.000036', '0 days 17:42:19.999999', 
                '9 days 11:16:02.000055', '0 days 22:35:25.000075'], 
               dtype='timedelta64[ns]', freq=None)

Giải thích chi tiết:

  • Dòng 0: 35μs 45ns → làm tròn lên μs tiếp theo → 36μs
  • Dòng 1: 999999μs (gần 1s) → đã là bội số μs → không đổi
  • Dòng 2: 55μs → đã là bội số μs → không đổi
  • Dòng 3: 75μs → đã là bội số μs → không đổi

Lưu ý: Chỉ dòng 0 có nanosecond (45ns) nên bị làm tròn lên. Các dòng khác đã chính xác đến microsecond.