Để làm tròn (round) DateTimeIndex đến tần suất là bội số của đơn vị (ví dụ: 10 phút, 15 phút, 30 giây), dùng DateTimeIndex.round(freq='10T').
Các bước thực hiện
1. Import thư viện
import pandas as pd
2. Tạo DateTimeIndex (tần suất giờ)
datetimeindex = pd.date_range(
'2021-09-29 07:20:32.261811624',
periods=5,
tz='Australia/Adelaide',
freq='H'
)
3. Round 10 phút
print("\nRound 10 phút...\n",
datetimeindex.round(freq='10T'))
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='H'
)
print("DateTimeIndex...\n", datetimeindex)
print("DateTimeIndex frequency...\n", datetimeindex.freq)
print("\nRound 10 phút...\n",
datetimeindex.round(freq='10T'))
Kết quả đầu ra
DateTimeIndex...
DatetimeIndex(['2021-09-29 07:20:32.261811624+09:30',
'2021-09-29 08:20:32.261811624+09:30',
'2021-09-29 09:20:32.261811624+09:30',
'2021-09-29 10:20:32.261811624+09:30',
'2021-09-29 11:20:32.261811624+09:30'],
dtype='datetime64[ns, Australia/Adelaide]', freq='H')
Round 10 phút...
DatetimeIndex(['2021-09-29 07:20:00+09:30', '2021-09-29 08:20:00+09:30',
'2021-09-29 09:20:00+09:30', '2021-09-29 10:20:00+09:30',
'2021-09-29 11:20:00+09:30'],
dtype='datetime64[ns, Australia/Adelaide]', freq=None)
Giải thích
- Gốc: 07:20:32, 08:20:32, 09:20:32, 10:20:32, 11:20:32
- Round 10 phút: làm tròn đến bội số 10 phút gần nhất
- 20:32 → 20:00 (32 < 35, gần 20 hơn 30)
- Kết quả: tất cả đều về :20:00 vì phần phút = 20, giây = 32 < 35
Các tần suất bội số thường dùng
| freq | Ý nghĩa | Ví dụ ranh giới |
|---|---|---|
| '15T' / '15min' | 15 phút | 00, 15, 30, 45 |
| '30T' / '30min' | 30 phút | 00, 30 |
| '10S' | 10 giây | 00, 10, 20, 30, 40, 50 |
| '5T' | 5 phút | 00, 05, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55 |
| '2H' | 2 giờ | 00:00, 02:00, 04:00... |
Ứng dụng: Căn chỉnh timestamp về lưới thời gian chuẩn (15p, 30p, 1h) cho báo cáo, resample, visualization.