df["ts"] = pd.to_datetime(df["ts"], utc=True, errors="coerce") df = df.dropna(subset=["ts"]).sort_values("ts") df["year"] = df["ts"].dt.year df["month"] = df["ts"].dt.month df["dayofweek"] = df["ts"].dt.dayofweek df["is_weekend"] = df["dayofweek"].isin([5, 6]).astype(int)
# UTC -> Asia/Seoul local_ts = df["ts"].dt.tz_convert("Asia/Seoul") df["hour_local"] = local_ts.dt.hour
daily = ( df.set_index("ts") .resample("D")["sales"].sum() .asfreq("D", fill_value=0) )
resample
asfreq
.dt