60歳からITエンジニアを目指す無謀なブログ

60歳で定年し、職種を変更してIT技術者を目指すブログです。

Pandas データフレーム引数の関数

データフレームの列方向に”平成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()