了解熊猫系列提取函数中的正则表达式

时间:2019-03-23 15:47:05

标签: python string pandas expression extract

我有以下代码:

import pandas as pd
s = pd.Series(['toy story (1995)', 'the pirates (2014)'])
print(s.str.extract('.*\((.*)\).*',expand = True))

输出:

     0
0  1995
1  2014

我了解到extract函数正在提取两个系列对象的括号之间的值。但是我不知道如何。 '.*\((.*)\).*'到底是什么意思?我认为星号表示通配符,但除此之外,我对于该表达式的实际含义感到困惑。

2 个答案:

答案 0 :(得分:3)

.*\(匹配所有内容,直到第一个(

\).*匹配从)到结尾的所有内容

(.*)返回前两个匹配之间的所有内容

答案 1 :(得分:1)

.*             Match any number of characters
\(             Match one opening parenthesis
    (.*)       Match any number of characters into the first capturing group
\)             Match a closing parenthesis
.*             Match any number of characters

该表示法称为正则表达式,我猜想Pandas在extract函数中使用了正则表达式,因此您可以获得更精确的数据。捕获组内部的东西将被退回。

您可以在baroque上了解有关正则表达式的更多信息。

这里是Wikipedia page,使用的是正则表达式。