Python 在映射列包含较大字符串的情况下,将字典中的键映射到值

Python 在映射列包含较大字符串的情况下,将字典中的键映射到值,python,pandas,dictionary,Python,Pandas,Dictionary,我有一本字典,上面有以下与“伦敦”有关的键作为值。我遇到的问题是,我想检查列值是否包含键值。因此,邮政编码值应映射到“伦敦”,但它们当前映射到“所有其他” 换言之,邮政编码“SW4 7SS”中包含“SW4”,因此应映射到“伦敦”,然而,它目前正使用我的代码映射到“所有其他” 我只有字典中当前键的映射可用。请就如何处理熊猫提出建议 postal_code= {'SE10':'London', 'SW4':'London', 'SW9':'London', 'SW18':'London', '

我有一本字典,上面有以下与“伦敦”有关的键作为值。我遇到的问题是,我想检查列值是否包含键值。因此,邮政编码值应映射到“伦敦”,但它们当前映射到“所有其他”

换言之,邮政编码“SW4 7SS”中包含“SW4”,因此应映射到“伦敦”,然而,它目前正使用我的代码映射到“所有其他”

我只有字典中当前键的映射可用。请就如何处理熊猫提出建议

postal_code= {'SE10':'London',
'SW4':'London',
'SW9':'London',
'SW18':'London',
'   ': 'All Other'
}

首先通过正则表达式中的
操作符
加入
dict.keys
。然后使用
Series.str.extract
从列中提取这些值。最后使用
Series.map
将数值映射到dict:

regex = '|'.join(postal_code.keys())
df['Region'] = df['Postal Code'].str.extract(f"({regex})")[0].map(postal_code) 

  Postal Code  Region
0     SW4 7SS  London
1     SW4 6QD  London
2     SW4 7UD  London
df['Region']=df['Postal Code'].map(postal_code)
regex = '|'.join(postal_code.keys())
df['Region'] = df['Postal Code'].str.extract(f"({regex})")[0].map(postal_code) 

  Postal Code  Region
0     SW4 7SS  London
1     SW4 6QD  London
2     SW4 7UD  London