如何处理熊猫str.extract中的嵌套括号?

时间:2020-06-11 22:02:31

标签: pandas numpy python-3.7

我有以下代码:

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}')

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

1 个答案:

答案 0 :(得分:1)

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

Shipping update

test.str.extract('((?:\d{2}\_){3})') 标记为非捕获组。