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