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

Python Pandas - Làm tròn (round) DateTimeIndex với tần suất micro-giây

Để làm tròn (round) DateTimeIndex đến tần suất micro-giây, dùng DateTimeIndex.round(freq='us').

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

1. Import thư viện

import pandas as pd

2. Tạo DateTimeIndex

datetimeindex = pd.date_range(
    '2021-09-29 07:20:32.261811624',
    periods=5,
    tz='Australia/Adelaide',
    freq='28s'
)

3. Round micro-giây

print("\nRound micro-giây...\n",
      datetimeindex.round(freq='us'))

Ví dụ hoàn chỉnh

import pandas as pd

datetimeindex = pd.date_range(
    '2021-09-29 07:20:32.261811624',
    periods=5,
    tz='Australia/Adelaide',
    freq='28s'
)

print("DateTimeIndex...\n", datetimeindex)
print("DateTimeIndex frequency...\n", datetimeindex.freq)
print("\nRound micro-giây...\n",
      datetimeindex.round(freq='us'))

Kết quả đầu ra

DateTimeIndex...
DatetimeIndex(['2021-09-29 07:20:32.261811624+09:30', ...],
              dtype='datetime64[ns, Australia/Adelaide]', freq='28S')

Round micro-giây...
DatetimeIndex(['2021-09-29 07:20:32.261812+09:30', ...],
              dtype='datetime64[ns, Australia/Adelaide]', freq=None)

Giải thích

  • Gốc: .261811624 giây = 261811.624 micro-giây
  • Round micro-giây: làm tròn đến micro-giây gần nhất. Phần nano = 624 ≥ 500 → làm tròn lên → 261812 micro-giây
  • Kết quả: .261812 giây

Quy tắc làm tròn (Banker's Rounding / Round Half to Even)

Pandas/Numpy sử dụng Round Half to Even (IEEE 754):

  • Phần dư < 0.5 → floor
  • Phần dư > 0.5 → ceil
  • Phần dư = 0.5 chính xác → làm tròn đến số chẵn gần nhất

Ví dụ micro-giây:

Nano-giâyRound micro-giây
261811.499261811
261811.500261812 (chẵn)
261812.500261812 (chẵn)
261812.501261813

Lưu ý: Kết quả mất tần suất (freq=None) vì các giá trị không còn cách đều sau làm tròn.