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 次 |
最近记录: |