データセットを扱っていると、Excelの有名な関数「VLOOKUP関数」のように列の値に基づいて、他の値を取ってくるというような処理をおこないたいケースもあるだろう。

今回はmap関数を使って、上記のようなことを実現する簡単な例を紹介しよう。

まず、以下のようなデータフレームがあったとする。

import pandas as pd

df = pd.DataFrame({'name': ['Taro', 'John', 'Li', 'Gracie'],
                  'country': ['Japan', 'America', 'China', 'Brazil']})

#      name  country
# 0    Taro    Japan
# 1    John  America
# 2      Li    China
# 3  Gracie   Brazil

このデータフレームに、国コードをマッピングする例を見ていく。

まずは、国コードをディクショナリとして定義する。

code = {
    'Japan': 'JPN',
    'America': 'USA',
    'China': 'CHN',
    'Brazil': 'BRA'
}

あとはマッピングの対象となる列にmap関数を適用し、引数に先ほど定義したディクショナリを渡せばOKだ。

新たにcode列を作成し、マッピングした値を代入している。

df['code'] = df['country'].map(code)

#      name  country code
# 0    Taro    Japan  JPN
# 1    John  America  USA
# 2      Li    China  CHN
# 3  Gracie   Brazil  BRA

map関数を応用すれば、ちょっとしたリレーショナルデータベース的な使い方もできるので、データの変換処理の幅が大きく広がるだろう。