python - 如何正确标准化地址类型
问题描述
我试图通过将缩写转换为完整的单词(例如 RD - Road)来标准化街道地址。我创建了许多行来解释不同的拼写,并遇到了一个替换代码覆盖另一个代码的问题
import pandas as pd
mydata = {'Street_type': ['PL', 'pl', 'Pl', 'PLACE', 'place']}
mydata = pd.DataFrame(mydata)
mydata['Street_type'] = mydata['Street_type'].replace('PL','Place',regex=True)
mydata['Street_type'] = mydata['Street_type'].replace('pl','Place',regex=True)
mydata['Street_type'] = mydata['Street_type'].replace('Pl','Place',regex=True)
mydata['Street_type'] = mydata['Street_type'].replace('PLACE','Place',regex=True)
mydata['Street_type'] = mydata['Street_type'].replace('place','Place',regex=True)
我得到的是 Placeace,而不是 Place。避免此错误的最佳方法是什么?我要写 if-else 语句或任何函数吗?提前致谢!
解决方案
在其他问题中,您有重叠的逻辑:在替换它之前,您没有检查目标(“旧”)字符串是否是一个完整的单词。例如,使用“PLACE”的输入类型,您会触发第一个和第三个替换,生成PlaceACE
然后PlaceaceACE
在您到达您想要的条件之前。
您需要仔细研究跟踪和排除逻辑,然后仅应用其中一种替换。您可以检查 street_type 的长度并应用该长度所需的唯一过渡。
如果您尝试转换case
语句,那么您需要遵循该逻辑模式,而不是您编写的连续应用程序。您可以轻松查看如何在 Python 中模拟“case”语句。
还可以考虑使用翻译词典,例如
type_trans = {
"pl": "Place",
"Pl": "Place",
"PLACE": "Place",
...
}
那么你的改变很简单
mydata['Street_type'] = type_trans[mydata['Street_type']]
此外,您可能会在一个元组中列出所有变体,例如:
type_place = ("PL", "Pl", "pl", "PLACE", "place")
if mydata['Street_type'] in type_place
mydata['Street_type'] = "Place"
...但请务必为您的整个街道类型列表正确概括这一点。
推荐阅读
- c - 如何更改 wait() - 信号量的方法以包含布尔值
- python - 客户端套接字无法连接到服务器套接字,[Errno 32] Broken pipe 错误
- javascript - 是否可以将 jQuery 与 Lit-element 一起使用?
- javascript - axios.then(res => { console.log(this) }) 打印未定义
- shell - 如何访问 kubernetes 容器 init 上的图像内容
- javascript - 如何从 httptriggered 函数输出到服务总线
- c++ - 如何在 C++ 中重新分配函数名
- javascript - 如何将页面链接添加到 svg 圈子?
- javascript - 如何在节点(mysql)中正确使用带有sequelize的嵌套包含查询
- grid - 如何使用语义 UI 在同一网格中创建“宽屏”和“计算机”类