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

Python Pandas - Làm tròn DateTimeIndex theo tần suất giờ

Để 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ốcPhútLàm trònQuy tắc
07:00007:00Đã tròn
07:353508:00≥30p → lên 1 giờ
08:101008:00<30p → xuống
08:454509:00≥30p → lên 1 giờ
09:202009: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=None vì sau làm tròn không còn tần suất đều.