Để làm tròn DateTimeIndex theo tần suất giờ (hourly), sử dụng phương thức DateTimeIndex.round() với tham số 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 35 phút, múi giờ Australia/Adelaide:
datetimeindex = pd.date_range('2021-09-29 07:00', periods=5, tz='Australia/Adelaide', freq='35T')
3. Làm tròn theo giờ
print("\nLàm tròn theo giờ:\n", datetimeindex.round(freq='H'))
Ví dụ hoàn chỉnh
import pandas as pd
datetimeindex = pd.date_range('2021-09-29 07:00', periods=5, tz='Australia/Adelaide', freq='35T')
print("DateTimeIndex:\n", datetimeindex)
print("\nGiờ:", datetimeindex.hour)
# Làm tròn theo giờ (freq='H')
print("\nLàm tròn theo giờ:\n", datetimeindex.round(freq='H'))
Kết quả đầu ra
DateTimeIndex: DatetimeIndex(['2021-09-29 07:00:00+09:30', '2021-09-29 07:35:00+09:30', '2021-09-29 08:10:00+09:30', '2021-09-29 08:45:00+09:30', '2021-09-29 09:20:00+09:30'], dtype='datetime64[ns, Australia/Adelaide]', freq='35T') Giờ: Int64Index([7, 7, 8, 8, 9], dtype='int64') Làm tròn theo giờ: DatetimeIndex(['2021-09-29 07:00:00+09:30', '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'], dtype='datetime64[ns, Australia/Adelaide]', freq=None)
Giải thích làm tròn giờ
| Gốc | Phút | Làm tròn | Quy tắc |
|---|---|---|---|
| 07:00 | 0 | 07:00 | Đã tròn |
| 07:35 | 35 | 08:00 | ≥30p → lên 1 giờ |
| 08:10 | 10 | 08:00 | <30p → xuống |
| 08:45 | 45 | 09:00 | ≥30p → lên 1 giờ |
| 09:20 | 20 | 09:00 | <30p → xuống |
Lưu ý
round()làm tròn đến tần suất gần nhất (nửa nửa lên).floor()luôn làm tròn xuống (trước).ceil()luôn làm tròn lên (sau).- Kết quả
freq=Nonevì sau làm tròn không còn tần suất đều.