文字列の数字への置き換え:文字列に揺らぎがある場合
以前の質問の拡張です。
xに入っている路線名を、辞書line_namesにあるような数字に置き換えたいと考えています。
しかし、路線名にはJRや都営などが付いたり、つかなかったりなど揺らぎあることが分かりました。
現在用意したcodeでは、完全に一致するもののみ、置き換えます。
用意した辞書と部分的に一致したものを番号に変換し、一致しないものは、欠損値にしたいのですが、
ご教示頂けるとありがたいです。
import pandas as pd
import numpy as np
df = pd.DataFrame(
{'x': ['JR山手線',
'山手線',
'JR総武線',
'総武線',
'西武池袋線',
'都営大江戸線',
'大江戸線',
'JR中央線',
'中央線',
'バス',
'車']})
line_names = {"山手線":"1",
"総武線":"2",
"西武池袋線":"3",
"都営大江戸線":"4",
"中央線":"5"}
#get() を使うとデフォルト値を指定できます。
df['y'] = df.apply(lambda row: line_names.get(row["x"], np.NaN), axis=1)