import pandas as pd
year = "2022"
def make_cal(df0, fn):
df1 = df0.pivot(
index=["remainder"], columns=["month", "quotient"], values=["day", "value"]
)
df1.columns = df1.columns.reorder_levels(order=[1, 2, 0])
df1.sort_index(axis=1, inplace=True)
df1.insert(12 + 0, "セパ1", pd.NA)
df1.insert(24 + 1, "セパ2", pd.NA)
df1.insert(36 + 2, "セパ3", pd.NA)
df1.insert(48 + 3, "セパ4", pd.NA)
df1.to_csv(fn, encoding="utf_8_sig", index=False, header=False)
holidays = pd.read_csv(
"https://www8.cao.go.jp/chosei/shukujitsu/syukujitsu.csv",
encoding="cp932",
index_col=0,
parse_dates=True,
header=None,
names=["date", "holiday"],
skiprows=1,
)
df_dates = pd.date_range(f"{year}-01-01", f"{year}-12-31", freq="D")
df0 = pd.DataFrame(index=df_dates).join(holidays)
df0["month"] = df0.index.month
df0["day"] = df0.index.day
df0["weekday"] = df0.index.weekday
df0["week"] = (df0["day"] - 1) // 7
df0["quotient"] = (df0["day"] - 1) // 16
df0["remainder"] = (df0["day"] - 1) % 16
df0["value"] = "出"
df1 = df0.copy()
df1["value"].mask(df1["weekday"] == 6, "休", inplace=True)
make_cal(df1, f"{year}_SUNx.csv")
df1["value"].mask(
(df1["weekday"] == 5) & ((df1["week"] == 1) | (df1["week"] == 3)), "休", inplace=True
)
make_cal(df1, f"{year}_SUNxSAT24.csv")
df1["value"].mask(df1["holiday"].notna(), "休", inplace=True)
make_cal(df1, f"{year}_SUNxSAT24HOLx.csv")
df1["value"].mask(df1["weekday"] > 4, "休", inplace=True)
make_cal(df1, f"{year}_SUNxSATxHOLx.csv")