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

Python Pandas - Kiểm tra ngày trong DateTimeIndex có phải đầu năm

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