Sta*_*yrr 3 python regex pandas
我有一个 Pandas 数据框,df其中包含以下 3 列:id,creation_date和email.
我想返回email列包含任何严格数字组合(必须是严格数字)的所有行,后跟“加”号,然后是任何内容。
例如:
- 1345677+@gmail.com,2345678+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.
任何人都可以建议吗?
非常感谢!
您可以使用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)
请注意contains和match, 从文档中的区别:
包含
类似的,但不那么严格,依赖于 re.search 而不是 re.match
| 归档时间: |
|
| 查看次数: |
10604 次 |
| 最近记录: |