【问题标题】:Python pandas regex very slowPython pandas 正则表达式非常慢
【发布时间】:2020-06-21 11:49:17
【问题描述】:

我有一个 pandas 数据框,其中包含几列和大约 20,000 行中的文本。我需要为我选择的正则表达式做一些字符串操作。使用 OR 运算符时,如

pattern = "string1|string2|string3"

一切都很好,脚本大约需要几秒钟,没关系。

但如果我使用 AND(环视)表达式,例如

pattern = "(?=.*string1)(?=.*string2)(?=.*string3)"

它超级慢。我的意思是显然它需要越来越频繁地计算,但它需要几分钟才能完成,即使我只使用 2 个字符串。

有没有办法让 AND 正则表达式算法更有效,它发生在一行中,而不是像链接一样

contains(string1, flags=re.I, regex=True) & contains(string2, flags=re.I, regex=True)

感谢您的帮助

【问题讨论】:

  • 为什么不把它放到数据库中呢?如果你有那么多行:数据库可能是要走的路。
  • 数据库是什么意思?我正在使用熊猫数据框。
  • 我的意思是使用数据库作为示例 sqlite db,然后调用 Regex 进行搜索
  • string1、string2、string3的顺序是否未指定?

标签: python regex pandas dataframe regex-lookarounds


【解决方案1】:

如果我们散布一些锚点,它会更快一点,但不要期望超过 10%。

"^(?=^.*string1)(?=^.*string2)(?=^.*string3)"

【讨论】:

    猜你喜欢
    • 2014-05-04
    • 2018-11-26
    • 2021-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-10
    • 2023-03-17
    相关资源
    最近更新 更多