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

Python Pandas - Chuyển Period sang tần suất mong muốn

Để 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ờ