我有以下代码:
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函数正在提取两个系列对象的括号之间的值。但是我不知道如何。 '.*\((.*)\).*'
到底是什么意思?我认为星号表示通配符,但除此之外,我对于该表达式的实际含义感到困惑。
答案 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,使用的是正则表达式。