python - 带有 Pandas 的 REGEX 过滤器(任何数字组合后跟 'plus' 符号)

标签 python regex pandas

我有一个名为 df 的 Pandas 数据框,其中包含以下 3 列:idcreation_dateemail

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

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

我知道 df.email.str.contains('\+') 不会工作,因为它会返回包含“加号”的所有内容。我试过 df.filter(['email'], regex=r'([^0-9])' % '\+', axis=0) 但它抛出了一条错误消息读取 TypeError:在字符串格式化期间并非所有参数都已转换

谁能给个建议?

非常感谢!

最佳答案

您可以使用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

现在使用匹配:

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

0     True
1     True
2    False
3    False
Name: email, dtype: bool

注意 containsmatch 之间的区别,来自文档:

contains
analogous, but less strict, relying on re.search instead of re.match

关于python - 带有 Pandas 的 REGEX 过滤器(任何数字组合后跟 'plus' 符号),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48236846/

相关文章:

javascript - RegExp 与 Node.js 中的预期模式不匹配

regex - 使用grep获取两个特定单词/字符之间的字符串的模式

python - 使用求和函数在列表中添加对象时出现不支持的操作数类型错误

python - DEBUG 为 False 时错误处理程序不触发

javascript - 如何使用正则表达式与关键字数组进行替换?

python - 将样式化的 pandas 数据框导出到 excel

python - 如何根据给定行中第 3 次出现的值获取列?

python - 测试列表和元组中的字符串包含

python - 源代码树 : wide or deep

python - 如何让程序放弃对终端的控制?