業務でこんな感じの文字列のデータフレームの列に対してユニークな値に対応する数値IDを割り振って新しく列を作りたいなぁと思って方法を調べたのでメモしておきます。
データ準備
イメージとしては購買データとかでアイテム名がデータがあるとします。
import pandas as pd df = pd.DataFrame({ 'item_name': ['水', 'コーラー', 'ウーロン茶', 'ウーロン茶', '水', 'お茶'], }) df
<実行結果>
ここにitem_nameの値に応じて番号を振りたいとします(item_idの順序付けには条件が無いものとする。すなわち、出現順やアルファベット順でなくても良いとする。)
これをプログラムで自動で実行するにはfactorize()
というメソッドを使ってあげると良いみたいです
というわけで実際に使ってみましょう。
factorize()関数でユニークな要素に対して数値IDを振る
#factorize()関数でユニークな要素に対して数値IDを振る df['item_id'] = df['item_name'].factorize()[0] df
<実行結果>
こんな感じでユニークな商品名ごとに固有のIDが割り振られています。マスタに商品名しかなくて数値IDで管理したいなぁなんて時にこれがあると便利ですね
コメント
[…] 参考:pandasで特定列のユニークな値を数値IDに変換する方法 […]