掩蔽数据帧的两种不同方法给出了不同的结果。我做错了什么?

2024-09-27 23:21:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在检查一个数据帧,该数据帧具有countycityaddress2列,用于特定的字符串集

字符串仅为城镇/城市名称:

['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

你们这些以前做过类似工作的人——这些方法中的一种通常比另一种更准确吗


Tags: recityflagscontactscontainscountystrdublin

热门问题