nykergoto’s blog

機械学習とpythonをメインに

Pandas で Index を dictionary で更新したい

pandas のデータフレームで以下のようなものが有るとします。

In [1]: import pandas as pd
In [2]: import numpy as np

In [3]: df_train = pd.DataFrame(data=np.random.uniform(size=(3, 2)), index=['one
   ...: ', 'two', 'three'])

In [4]: df_train
Out[4]: 
              0         1
one    0.289881  0.649603
two    0.229427  0.811377
three  0.498204  0.779105

でこの index を例えば日本語の "いち", "に", "さん" になおしたいなという時。愚かな方法だと index.str.replace につらつらと書いていく方法があります.

df_train.index = df_train.index.str.replace('one', 'いち').str.replace('two', 'に')

でもなんかださいですね。dict で対応関係を記述して, それを元に変換するというふうにコードの責任分離をやりたいところです。

調べた所 pandas.DataFrame.rename を index にたいして使えとありました。

In [5]: en_ja_map = dict(one='いち', two='に', three='さん')

In [6]: df_train = df_train.rename(en_ja_map, axis='index')

In [7]: df_train
Out[7]: 
           0         1
いち  0.289881  0.6496030.229427  0.811377
さん  0.498204  0.779105

おしゃれでいいですね;)

さんこう