質問: 後述のようなsample.csvを読み込んだDataFrame dfがあったときに、カテゴリカルな変数であるresidenceに一位のラベルを自動的にふるよい方法があれば教えてください。 pandas.get_dummies(df)を用いるとそれっぽいことができなくはないですが、東京カラム、神奈川カラム、、、などと特徴量の変数の数だけ、新しい特徴量ができ、それらが0,1になってしまいます。 やりたいこととは異なります。 また、mapを用いて df.map({"東京":1, "神奈川":2,,,}) とすれば、求めたい形にはなりますが、自分で対応関係を辞書で手動定義する必要があり面倒です。 csvはあくまでも例なので実際に使いたいデータとは異なりますが、 自動でふる良い方法があれば教えてください。 sample.csv ---------- name,residence 安倍,東京 野田,神奈川 菅,千葉 鳩山,埼玉 麻生,神奈川 ,,, 伊藤,沖縄 ↑1000行くらいある こういう風にしたい --------- name,residence 安倍,1 野田,2 菅,3 鳩山,4 麻生,2 ,,, 伊藤,47 東京は1, 神奈川は2, 千葉は3, 埼玉は4, 沖縄は47など。
回答: **residence**列を category型のデータに変換して, カテゴリーコードを取り出せばよろしいかと思います。 ``` df['residence'] = df['residence'].astype('category') df['residence_code'] = df['residence'].cat.codes ``` 今回のように単に文字列を数値に変換したい場合は ``` df['residence'] = df['residence'].astype('category').cat.codes ``` で良いかもしれません。