То, что вы делаете выше, работает только тогда, когда ваш год указан в ()
, например, нижеприведенное не работает:
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+