Posted at

pandasで日付から祝日を含めた曜日を取得する方法

jupyterで統計しているときに、説明変数として曜日を使いたくなった。

ただし、祝日だけは別扱いしたい。

こんな時に使える方法です。

import pandas as pd

import japandas as jpd
import locale
locale.setlocale(locale.LC_TIME, 'ja_JP.UTF-8')

#日付を含むデータフレームがある
df = pd.DataFrame(jpd.date_range(u'2016年5月1日', u'2018年12月10日', freq='D'))

# japandasにある祝日カレンダを拾ってくる
jhc = jpd.JapaneseHolidayCalendar()

# 祝日カレンダにあれば「祝」を、なければ曜日を格納
df[1] = [('祝') if t in jhc.holidays() else (t.strftime('%a')) for t in df[0]]

# 曜日の列ができる
df

こんな感じで祝日を含む曜日データが得られます

image.png

これだけにずっと悩んでしまったのでメモ。

もっといい方法があれば教えてください