Để 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:
.261811624giây =261811.624micro-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 →
261812micro-giây - Kết quả:
.261812giâ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ây | Round micro-giây |
|---|---|
| 261811.499 | 261811 |
| 261811.500 | 261812 (chẵn) |
| 261812.500 | 261812 (chẵn) |
| 261812.501 | 261813 |
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.