Để làm tròn lên (ceil) DateTimeIndex đến tần suất giờ, dùng DateTimeIndex.ceil(freq='H').
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 20 phút)
datetimeindex = pd.date_range(
'2021-09-29 07:20:32.261811624',
periods=5,
tz='Australia/Adelaide',
freq='20min'
)
3. Ceil giờ
print("\nCeil giờ...\n",
datetimeindex.ceil(freq='H'))
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='20min'
)
print("DateTimeIndex...\n", datetimeindex)
print("DateTimeIndex frequency...\n", datetimeindex.freq)
print("\nCeil giờ...\n",
datetimeindex.ceil(freq='H'))
Kết quả đầu ra
DateTimeIndex...
DatetimeIndex(['2021-09-29 07:20:32.261811624+09:30',
'2021-09-29 07:40:32.261811624+09:30',
'2021-09-29 08:00:32.261811624+09:30',
'2021-09-29 08:20:32.261811624+09:30',
'2021-09-29 08:40:32.261811624+09:30'],
dtype='datetime64[ns, Australia/Adelaide]', freq='20T')
Ceil giờ...
DatetimeIndex(['2021-09-29 08:00:00+09:30', '2021-09-29 08:00:00+09:30',
'2021-09-29 09:00:00+09:30', '2021-09-29 09:00:00+09:30',
'2021-09-29 09:00:00+09:30'],
dtype='datetime64[ns, Australia/Adelaide]', freq=None)
Giải thích
- Gốc: 07:20, 07:40, 08:00, 08:20, 08:40 (có phút/giây lẻ)
- Ceil giờ: làm tròn lên đến giờ nguyên tiếp theo
- 07:20 → 08:00
- 07:40 → 08:00
- 08:00 (có giây lẻ) → 09:00
- 08:20 → 09:00
- 08:40 → 09:00
- Phút/giây/phân giây reset về 0
Tóm tắt ceil/floor/round theo giờ
| Thời gian gốc | ceil('H') | floor('H') | round('H') |
|---|---|---|---|
| 07:20:32 | 08:00:00 | 07:00:00 | 07:00:00 |
| 07:40:32 | 08:00:00 | 07:00:00 | 08:00:00 |
| 08:00:32 | 09:00:00 | 08:00:00 | 08:00:00 |
round làm tròn đến giờ gần nhất (30 phút là ngưỡng).