Để chuyển Period sang tần suất mong muốn, sử dụng phương thức period.asfreq(). Ví dụ chuyển sang tần suất giờ với chỉ thị 'H'.
Các bước thực hiện
1. Import thư viện
import pandas as pd
2. Tạo hai Period object khác nhau
period1 = pd.Period("2020-09-23 03:15:40") # Tự động nhận diện tần suất
period2 = pd.Period(freq="D", year=2021, month=4, day=16, hour=2, minute=35)
3. Chuyển cả hai sang tần suất giờ
res1 = period1.asfreq('H')
res2 = period2.asfreq('H')
Ví dụ hoàn chỉnh
import pandas as pd
period1 = pd.Period("2020-09-23 03:15:40")
period2 = pd.Period(freq="D", year=2021, month=4, day=16, hour=2, minute=35)
print("Period1...\n", period1)
print("Period2...\n", period2)
res1 = period1.asfreq('H')
res2 = period2.asfreq('H')
print("\nKết quả chuyển đổi Period1 (tần suất giờ)...\n", res1)
print("\nKết quả chuyển đổi Period2 (tần suất giờ)...\n", res2)
Kết quả đầu ra
Period1...
2020-09-23 03:15:40
Period2...
2021-04-16
Kết quả chuyển đổi Period1 (tần suất giờ)...
2020-09-23 03:00
Kết quả chuyển đổi Period2 (tần suất giờ)...
2021-04-16 23:00
Giải thích sự khác biệt:
- Period1: tần suất gốc là giây/phút (có thông tin giờ: 03:15:40). Chuyển sang 'H' → cắt bớt phút/giây → 03:00 (đầu giờ)
- Period2: tần suất gốc là 'D' (ngày), không có thông tin giờ. Chuyển sang 'H' → Pandas mặc định dùng **cuối ngày** (how='end') → 23:00
Kiểm soát hành vi chuyển tần suất mịn hơn:
period2.asfreq('H', how='start') # 2021-04-16 00:00
period2.asfreq('H', how='end') # 2021-04-16 23:00 (mặc định)
period2.asfreq('H', how='s') # Trả về PeriodIndex chứa 24 giờ