movies['year'] = movies['title'].str.extract('.*((.*)).*', expand=True)
在上面的代码行中,请解释.*((.*)).*
中每个字符的使用。它将如何从《玩具总动员》(1995(中提取1995?
您上面所做的仅在您的年份在()
时有效,例如以下内容不起作用:
In [98]: pd.Series(["Toy Story 1995"]).str.extract('.*((.*)).*', expand=True)
Out[98]:
0
0 NaN
In [99]: pd.Series(["Toy Story (test)"]).str.extract('.*((.*)).*', expand=True)
Out[99]:
0
0 test
以上是查找括号之间的所有元素。*.
实际上是匹配所有元素,/
正在逃离外部()
,内部()
用于指定捕获组,即什么模式。
您可能想执行以下操作,/d
是数字[0-9]
的简写,{4}
突出显示了预期的长度,因此,如果您知道年份格式yyyy
那么可以执行以下操作:
movies['title'].str.extract('(d{4})')
此线程有一个更通用的示例,使用/d+