私たちのシステムが(何らかの理由で)データに適用するいくつかの都市名の略語の辞書があります(つまり、「カンザスシティ」は「カンザス CY」と省略され、オクラホマシティは正しいスペルです)。
関数をデータフレームの列に適用する際に問題が発生していますが、データの文字列を渡すと機能します。以下のコードサンプル:
def multiple_replace(text, dict):
# Create a regular expression from the dictionary keys
regex = re.compile("(%s)" % "|".join(map(re.escape, dict.keys())))
# For each match, look-up corresponding value in dictionary
return regex.sub(lambda mo: dict[mo.string[mo.start():mo.end()]], text)
testDict = {"Kansas CY": "Kansas City"}
dfData['PREV_CITY'] = dfData['PREV_CITY'].apply(multiple_replace, dict=testDict)
その最後の行に 'axis=1' を追加すると、指定した引数が多すぎるというエラーが発生します。それ以外の場合は、エラーなしで実行され、辞書に一致する場合に変更が加えられません。
前もって感謝します!-リース