我正在检查一个数据帧,该数据帧具有county
、city
和address2
列,用于特定的字符串集
字符串仅为城镇/城市名称:
['dublin', 'fingal','dun laoghaire','dunlaoghaire','dun laoire','dunlaoire']
我正在使用str.contains
,我刚刚测试了两种方法。从我看来,它们在逻辑上是相同的,但给出了不同的结果
我已经盯着它看了一个小时了,我不知道该用哪种方法
方法1
searchfor = ['dublin', 'fingal','dun laoghaire','dunlaoghaire','dun laoire','dunlaoire']
mask_short = (contacts.county.str.contains('|'.join(searchfor),flags=re.IGNORECASE)|
contacts.city.str.contains('|'.join(searchfor),flags=re.IGNORECASE)|
contacts.address2.str.contains('|'.join(searchfor),flags=re.IGNORECASE))
发现的记录:
mask_short.sum()
21699
方法2-非常丑陋,我想避免这种情况:
mask_long = (contacts.county.str.contains('dublin',flags=re.IGNORECASE)|
contacts.city.str.contains('dublin',flags=re.IGNORECASE)|
contacts.address2.str.contains('dublin',flags=re.IGNORECASE)|
contacts.county.str.contains('fingal',flags=re.IGNORECASE)|
contacts.city.str.contains('fingal',flags=re.IGNORECASE)|
contacts.address2.str.contains('fingal',flags=re.IGNORECASE)|
contacts.county.str.contains('dun laoghaire',flags=re.IGNORECASE)|
contacts.city.str.contains('dun laoghaire',flags=re.IGNORECASE)|
contacts.address2.str.contains('dun laoghaire',flags=re.IGNORECASE)|
contacts.county.str.contains('dunlaoghaire',flags=re.IGNORECASE)|
contacts.city.str.contains('dunlaoghaire',flags=re.IGNORECASE)|
contacts.address2.str.contains('dunlaoghaire',flags=re.IGNORECASE)|
contacts.county.str.contains('dun laoire',flags=re.IGNORECASE)|
contacts.city.str.contains('dun laoire',flags=re.IGNORECASE)|
contacts.address2.str.contains('dun laoire',flags=re.IGNORECASE)|
contacts.county.str.contains('dunlaoire',flags=re.IGNORECASE)|
contacts.city.str.contains('dunlaoire',flags=re.IGNORECASE)|
contacts.address2.str.contains('dunlaoire',flags=re.IGNORECASE))
发现记录,大约220个额外的:
mask_long.sum()
21892
你们这些以前做过类似工作的人——这些方法中的一种通常比另一种更准确吗
目前没有回答
相关问题 更多 >
编程相关推荐