首页 > 解决方案 > 使用 str.contains() 在加号 (+) 之后找不到字符串

问题描述

我正在编写一个代码来处理一个数据框,其中一个列具有“102334+2N”或“102334+2G”或“102334+3”等字符串。使用 str.contains() 时,在加号 (+) 之后什么都找不到。

这工作得很好:

df.loc[df['SKU'].str.contains(r"102334", case=False), ["SKU", "DESCRIPTION"]]

这将使用“102334”加上任何附加字符串定位所有

df.loc[df['SKU'].str.contains(r"102334+", case=False), ["SKU", "DESCRIPTION"]]

这找不到任何东西:

df.loc[df['SKU'].str.contains(r"102334+2", case=False), ["SKU", "DESCRIPTION"]]

我将不胜感激任何有助于我理解如何解决它的答案。

结果正确:df.loc[df['SKU'].str.contains(r"102334", case=False), ["SKU", "DESCRIPTION"]]

在此处输入图像描述

结果不正确(最后一行不是预期的):

df.loc[df['SKU'].str.contains(r"102334+", case=False), ["SKU", "DESCRIPTION"]]

在此处输入图像描述

并且最后的结果没有显示任何项目(预期 1 到 3):

df.loc[df['SKU'].str.contains(r"102334+2", case=False), ["SKU", "DESCRIPTION"]]

在此处输入图像描述

标签: stringpandascontains

解决方案


使用 Regex 参数可以解决问题。正确表达式:df.loc[df['SKU'].str.contains(r"102334+2", case=False, regex=False), ["SKU", "DESCRIPTION", "VERSÃO","BU" , "CPV_M", "CF_M"]]

谢谢,wpercy 的提示。


推荐阅读