Để kiểm tra các ngày trong DateTimeIndex có phải là ngày đầu năm (January 1) hay không, sử dụng thuộc tính DateTimeIndex.is_year_start.
Các bước thực hiện
1. Import thư viện
import pandas as pd
2. Tạo DateTimeIndex quanh đầu năm
Tần suất 1 ngày, 6 kỳ, bắt đầu 30/12:
datetimeindex = pd.date_range('2021-12-30 02:30:50', periods=6, tz='Australia/Adelaide', freq='1D')
3. Kiểm tra đầu năm
print("\nKiểm tra ngày đầu năm:\n", datetimeindex.is_year_start)
Ví dụ hoàn chỉnh
import pandas as pd
datetimeindex = pd.date_range('2021-12-30 02:30:50', periods=6, tz='Australia/Adelaide', freq='1D')
print("DateTimeIndex:\n", datetimeindex)
print("\nTần suất:", datetimeindex.freq)
print("\nNgày đầu năm?\n", datetimeindex.is_year_start)
Kết quả đầu ra
DateTimeIndex: DatetimeIndex(['2021-12-30 02:30:50+10:30', '2021-12-31 02:30:50+10:30', '2022-01-01 02:30:50+10:30', '2022-01-02 02:30:50+10:30', '2022-01-03 02:30:50+10:30', '2022-01-04 02:30:50+10:30'], dtype='datetime64[ns, Australia/Adelaide]', freq='D') Tần suất:Kiểm tra ngày đầu năm: [False False True False False False]
Giải thích
Chỉ index 2 (2022-01-01) trả về True. Các ngày 30/12, 31/12/2021 thuộc năm cũ → False.
Ứng dụng thực tế
# Lọc dữ liệu đầu năm
year_start_data = df[df.index.is_year_start]
# Feature engineering
df['is_year_start'] = df.index.is_year_start.astype(int)
df['is_year_end'] = df.index.is_year_end.astype(int)
df['is_month_start'] = df.index.is_month_start.astype(int)
# Resample năm, lấy giá trị đầu năm
annual_first = df.resample('A').first() # hoặc 'AS' cho đầu năm
Lưu ý về tần suất anchored
'A'/'Y': Year End (31/12).'AS'/'YS': Year Start (1/1).'Q': Quarter End.'QS': Quarter Start.