从字符串中提取数值数据


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+

最新更新