Pandas: カテゴリを数値に変換する 質問する

Pandas: カテゴリを数値に変換する 質問する

次のような国に関するデータフレームがあるとします。

cc | temp
US | 37.0
CA | 12.0
US | 35.0
AU | 20.0

国を「ワンホットエンコーディング」に変換する pd.get_dummies 関数があることは知っています。ただし、代わりに取得できるようにインデックスに変換したいと考えていますcc_index = [1,2,1,3]

以下に示すように、get_dummies を numpy where 句と一緒に使用するよりも速い方法があると思います。

[np.where(x) for x in df.cc.get_dummies().values]

これは、R で「因子」を使用するとやや簡単に実行できるので、pandas にも同様の機能があることを期待しています。

ベストアンサー1

まず、列のタイプを変更します。

df.cc = pd.Categorical(df.cc)

データは似ていますが、カテゴリ別に保存されています。カテゴリ コードを取得するには:

df['code'] = df.cc.codes

これで次のようになります:

   cc  temp  code
0  US  37.0     2
1  CA  12.0     1
2  US  35.0     2
3  AU  20.0     0

DataFrame を変更せずにコードを取得するだけの場合は、次のようにします。

df.cc.astype('category').codes

または、カテゴリ列をインデックスとして使用します。

df2 = pd.DataFrame(df.temp)
df2.index = pd.CategoricalIndex(df.cc)

おすすめ記事