都道府県名から都道府県番号に変換及びその反対変換をjp_pref.prefectureモジュールの
name2code, code2nameをPandas データフレームに対して利用する関数とその適用方法を紹介します。
モジュールをインポートと関数定義
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| # 必要なモジュールをインポート
from jp_pref.prefecture import name2code, code2name
from jp_pref.prefecture import df as df_pref
# 関数の定義1 都道府県番号から都道府県名を得る関数の定義
def get_prefecture_name(prefecture_number):
try:
return df_pref[df_pref["都道府県番号"] == prefecture_number]["都道府県名"].values[0]
except IndexError:
return None # 該当する都道府県名がない場合は None を返す
# 関数の定義2 都道府県名から都道府県番号を得る関数の定義
def get_prefecture_number(prefecture_name):
try:
return df_pref[df_pref["都道府県名"] == prefecture_name]["都道府県番号"].values[0]
except IndexError:
return None # 該当する都道府県名がない場合は None を返す
|
定義した関数
- get_prefecture_name(prefecture_number)
- 都道府県番号 ==> 都道府県名
- get_prefecture_number(prefecture_name)
- 都道府県名 ==> 都道府県番号
df_pref を関数参照用に操作する
df_pref が定義した上記の関数が参照するデータフレームですが、そのままでは使えません。
都道府県番号をインデックスから列名’都道府県番号’に変更するなどの操作が必要です。
詳細は、以下のコードのとおりです。
1
2
3
4
5
6
7
| # df_pref データフレームを関数に合わせて
# インデックスから列にリセットし、列名を変更する
df_pref = df_pref.reset_index()
df_pref.rename(columns={'code': '都道府県番号',
'name': '都道府県名',
'short_name': '都道府県'}, inplace = True)
|
関数のPandas Pandas データフレームへの適用
1
2
3
4
5
6
7
8
9
10
11
12
| # データフレーム内の"都道府県番号"という列の値から
# "TDFK_name"という新しい列を作成し、対応する都道府県名を代入する
# 該当する都道府県名が無い 例:48 の場合は None を返す
df['TDFK_name'] = df['都道府県番号'].apply(get_prefecture_name)
# データフレーム内の"都道府県名"という列の値から
# "TDFK_number"という新しい列を作成し、対応する都道府県番号を代入する
# 該当する都道府県番号が無い 例:東大阪 の場合は None を返す
df['TDFK_number'] = df['都道府県名'].apply(get_prefecture_name)
|