データセットを扱っていると、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関数を応用すれば、ちょっとしたリレーショナルデータベース的な使い方もできるので、データの変換処理の幅が大きく広がるだろう。