Để tính TimedeltaArray biểu diễn hiệu giữa các giá trị DateTimeIndex và phiên bản PeriodArray của nó tại tần suất chỉ định, dùng DateTimeIndex.to_perioddelta(freq).
Các bước thực hiện
1. Import thư viện
import pandas as pd
2. Tạo DateTimeIndex
datetimeindex = pd.date_range(
'2021-10-18 07:20:32.261811624',
periods=5,
freq='2Y'
)
3. Tính PeriodDelta với tần suất tháng ('M')
print("\nPeriodDelta (freq='M')...\n",
datetimeindex.to_perioddelta(freq='M'))
Ví dụ hoàn chỉnh
import pandas as pd
datetimeindex = pd.date_range(
'2021-10-18 07:20:32.261811624',
periods=5,
freq='2Y'
)
print("DateTimeIndex...\n", datetimeindex)
print("DateTimeIndex frequency...\n", datetimeindex.freq)
# Chuyển sang Period (tháng)
print("\nDateTimeIndex to Period (freq='M')...\n",
datetimeindex.to_period(freq='M'))
# Tính PeriodDelta
print("\nDateTimeIndex to PeriodDelta (freq='M')...\n",
datetimeindex.to_perioddelta(freq='M'))
Kết quả đầu ra
DateTimeIndex...
DatetimeIndex(['2021-12-31 07:20:32.261811624', '2023-12-31 07:20:32.261811624',
'2025-12-31 07:20:32.261811624', '2027-12-31 07:20:32.261811624',
'2029-12-31 07:20:32.261811624'],
dtype='datetime64[ns]', freq='2A-DEC')
DateTimeIndex to Period (freq='M')...
PeriodIndex(['2021-12', '2023-12', '2025-12', '2027-12', '2029-12'], dtype='period[M]')
DateTimeIndex to PeriodDelta (freq='M')...
TimedeltaIndex(['30 days 07:20:32.261811624', '30 days 07:20:32.261811624',
'30 days 07:20:32.261811624', '30 days 07:20:32.261811624',
'30 days 07:20:32.261811624'],
dtype='timedelta64[ns]', freq=None)
Giải thích
to_period(freq='M'): Chuyển mỗi timestamp thành Period tháng (ví dụ: 2021-12-31 → 2021-12)to_perioddelta(freq='M'): Tính hiệutimestamp - period_start. Với freq='M', period_start là 00:00 ngày 1 của tháng đó. Kết quả là TimedeltaIndex thể hiện độ lệch từ đầu tháng.- Trong ví dụ: Tất cả đều là 31/12 07:20:32 → lệch 30 ngày 7h20m32s từ 1/12.
Ứng dụng: Phân tích mùa vụ, so sánh thời điểm trong chu kỳ (ngày trong tháng, giờ trong ngày...).