首页 > 解决方案 > 在被映射的列包含较大字符串的情况下,将键从字典映射到值

问题描述

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

换句话说,邮政编码“SW4 7SS”中包含“SW4”,因此应该映射到“伦敦”,但是,它目前正在使用我的代码映射到“所有其他”。

我只有一个可用于字典中当前键的映射。请告知如何使用熊猫进行操作。

postal_code= {'SE10':'London',
'SW4':'London',
'SW9':'London',
'SW18':'London',
'   ': 'All Other'
}
Postal Code
SW4 7SS
SW4 6QD
SW4 7UD
df['Region']=df['Postal Code'].map(postal_code)

标签: pythonpandasdictionary

解决方案


首先加入dict.keysby |which 是or正则表达式中的运算符。然后使用Series.str.extract从您的列中提取这些值。最后使用Series.map您的字典映射值:

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

推荐阅读