データフレームの列方向に”平成3年”、”昭和61年”、”令和2年”、、、のような和暦データが入っているとします。このデータを西暦に変換する関数を考えます。
列方向のデータはSeriesデータに対して、value_counts()データの出現頻度を数えあげ実行し、そのkey(”昭和54年”、”昭和59年”、、)をiterableとしてfor
ループに渡して、和暦/西暦変換のjeraconv関数を実行してSeriesデータを返り値として
戻します。
def era_j2w(df, default_year) : # df:データフレーム、 default_year 例外時のyear
conv_year_dict = {} # 変換用dict table { '昭和61年’:1986、’平成3年’:1991 ,,}
#作成元の空のdictを定義する
for je_year in df.value_counts().keys():
try:
we_year = j2w.convert(je_year)
except:
## 変換不能な和暦時は例外としてdefault_yearを代入
we_year = 1234
finally: # dict型に[key]参照でvalueに変換した西暦を代入
conv_year_dict[je_year] = int(we_year)
df_out = df.map(conv_year_dict) #mapでdictのkeyをvalue一括変換 return df_out
前提として以下のインポートとインスタンスも必要です。
from jeraconv import jeraconv
j2w = jeraconv.J2W()