带有 Pandas 的 REGEX 过滤器(任何数字组合后跟“加号”)

Sta*_*yrr 3 python regex pandas

我有一个 Pandas 数据框,df其中包含以下 3 列:id,creation_dateemail.

我想返回email列包含任何严格数字组合(必须是严格数字)的所有行,后跟“加”号,然后是任何内容。

例如:
- 1345677+@gmail.com2345678+556@gmail.com将符合我的标准。
-Testing+22@gmail.com并且test223+22@gmail.com不会,因为它们在“加号”之前包含非数字字符。

我知道df.email.str.contains('\+')这行不通,因为它会返回包含“加”号的所有内容。我试过了,df.filter(['email'], regex=r'([^0-9])' % '\+', axis=0)但它抛出了一条错误消息,内容为TypeError: not all arguments converted during string formatting.

任何人都可以建议吗?

非常感谢!

and*_*ece 5

您可以使用contains,但match应该足够了:

# example data
data = ["1345677+@gmail.com", "2345678+556@gmail.com", 
        "Testing+22@gmail.com", "test223+22@gmail.com"]
df = pd.DataFrame(data, columns=["email"])

df
                   email
0     1345677+@gmail.com
1  2345678+556@gmail.com
2   Testing+22@gmail.com
3   test223+22@gmail.com
Run Code Online (Sandbox Code Playgroud)

现在使用match

df.email.str.match("\d+\+.*")

0     True
1     True
2    False
3    False
Name: email, dtype: bool
Run Code Online (Sandbox Code Playgroud)

请注意containsmatch, 从文档中的区别:

包含
类似的,但不那么严格,依赖于 re.search 而不是 re.match