【问题标题】:How to cope with nested parenthesis in str.extract in pandas?如何处理大熊猫 str.extract 中的嵌套括号?
【发布时间】:2020-06-11 22:02:31
【问题描述】:

我有以下代码:

df['hms'].str.extract('([0-9]{2}\_[0-9]{2}\_[0-9]{2}\_)')

列中的字符串类似于:“12_31_31_”(实际上是时间戳)。上面的代码有效,但是我想做的是将模式([0-9]{2}\_[0-9]{2}\_[0-9]{2}\_) 重新定义为([0-9]{2}\_){3}。代码是:

display(df['event_id'].str.extract('([0-9]{2}\_){3}'))

但是匹配会产生21_ 或类似的东西。

示例代码:

test = pd.Series(['12_41_15_asds', '41_14_11_adfsag'])
test.str.extract('([0-9]{2}\_){3}')

我认为该模式失败了,因为他们只查看内括号,但是如果我需要在所有内容周围添加一个额外的括号,我会得到两列。有没有办法解决这个问题?

【问题讨论】:

  • 你最后想要什么?是否要提取日期?
  • 是的,我唯一想要的就是让模式更简洁。

标签: pandas numpy python-3.7


【解决方案1】:

您可以使用双括号,但使内括号不被捕获:

test.str.extract('((?:\d{2}\_){3})')

(?: ... ) 标记非捕获组。

【讨论】:

    猜你喜欢
    • 2015-10-11
    • 2015-11-24
    • 2015-03-29
    • 1970-01-01
    • 1970-01-01
    • 2018-05-05
    • 1970-01-01
    • 2019-07-08
    相关资源
    最近更新 更多