後述のような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など。