python - 在被映射的列包含较大字符串的情况下,将键从字典映射到值
问题描述
我有一本字典,其中包含与“伦敦”相关的以下键作为值。我遇到的问题是我想检查列值是否包含我的键值。所以邮政编码值应该映射到“伦敦”,但它们当前映射到“所有其他”。
换句话说,邮政编码“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)
解决方案
首先加入dict.keys
by |
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
推荐阅读
- javascript - 如何在 Nuxtjs 中创建用于检查角色的中间件
- java - 如何将excel文件的可见性设置为true
- angular - 使用 VS Code 启动 Angular 应用程序时 Chrome 挂起
- php - 使用php中的递归函数调用,回声不嵌套
- node.js - 从 Firebase Cloud 函数返回承诺
- bash - 如何让我的 bash 脚本等待 30 分钟才能运行?
- javascript - React Navigation - 无法读取未定义的属性“导航”
- spring - Spring RestTemplate 如何处理第三方服务发送的响应内容类型“text/csv; charset=utf-8-sig”?
- python - Chrome 77 的 Chromedriver 应该支持无头下载,但下载仍然不起作用
- excel - VBA 函数首先评估内部属性