df["ts"] = pd.to_datetime(df["ts"], utc=True) local = df["ts"].dt.tz_convert("Asia/Seoul") df["year"] = local.dt.year df["month"] = local.dt.month df["day"] = local.dt.day df["dayofweek"] = local.dt.dayofweek df["is_weekend"] = local.dt.dayofweek.isin([5, 6]).astype(int) df["is_month_start"] = local.dt.is_month_start.astype(int) df["is_month_end"] = local.dt.is_month_end.astype(int)
import holidays kr_holidays = holidays.KR(years=[2024, 2025, 2026]) dates = local.dt.date df["is_holiday"] = dates.isin(kr_holidays).astype(int)
# 휴일 전/후 영향 구간(예: -1일, +1일) df["is_holiday_prev_day"] = dates.map( lambda d: int((d + pd.Timedelta(days=1)) in kr_holidays) ) df["is_holiday_next_day"] = dates.map( lambda d: int((d - pd.Timedelta(days=1)) in kr_holidays) )