###前提・実現したいこと
・pandasを利用しcsvファイルから得たデータフレームがある
・年齢データを年代別かつダミー変数に置き換えたい
python
1def convert_age(df): 2 for i in df.iterrows(): 3 #年齢["Age]から年代["Generations"]に 4 df["Generations"]=df["Age"]//10 5 #12歳なら1、35歳なら3にする
・関数にして他csvファイルを読み込んだときにも使いまわしたい
現在はこのようなコードです
python
1def convert_age(df): 2 for i in df.iterrows(): 3 #年齢["Age]から年代["Generations"]に 4 df["Generations"]=df["Age"]//10 5 #12歳なら1、35歳なら3にする 6 7 generations_dummies = pd.get_dummies(df["Generations"], drop_first = True) 8 generations_dummies.columns=[ 9 "generation_1", 10 "generation_2", 11 "generation_3", 12 "generation_4", 13 "generation_5", 14 "generation_6", 15 "generation_7", 16 "generation_8"] 17
###発生している問題・エラーメッセージ
python
1train_df=pd.read_csv("./data/train.csv") 2test_df=pd.read_csv("./data/test.csv")
・例えばこのように二種類のcsvファイルを読み込んだときに
train_dfには0から80代までいる場合
=>自動で生成されるダミー変数は8(drop_firstしなければ9)
test_dfのcsvファイルには0から80代のうち70代の人がいない場合
=>自動で生成されるダミー変数は7(drop_firstしなければ8)
となりますが、上記のコードだとtrain_dfでは通りますがtest_dfをcovert_ageで変換しようとするとダミー変数の列数が足りずエラーとなってしまいます。
関数にしたままエラーが出ない方法が何かあれば回答よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。