Извлечение числовых данных из строки - PullRequest
0 голосов
/ 12 октября 2019
movies['year'] = movies['title'].str.extract('.*\((.*)\).*', expand=True)

В приведенной выше строке кода, пожалуйста, объясните использование каждого символа в .*\((.*)\).*. Как он извлечет 1995 из Toy Story (1995)?

1 Ответ

0 голосов
/ 12 октября 2019

То, что вы делаете выше, работает только тогда, когда ваш год указан в (), например, нижеприведенное не работает:

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+

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...