Вместо re.findall
, который возвращает список строк, вы можете использовать str.extract()
:
wine['year'] = wine['title'].str.extract(r'\b(\d{4})\b')
Или, если вы хотите соответствовать только 1900-2000s годам:
wine['year'] = wine['title'].str.extract(r'\b((?:19|20)\d{2})\b')
Обратите внимание, что шаблон в str.extract
должен содержать хотя бы 1 группу захвата, его значение будет использоваться для заполнения нового столбца.Первое совпадение будет рассматриваться только, поэтому вам, возможно, придется уточнять контекст позже, если это будет необходимо.
Я предлагаю использовать границы слов \b
вокруг шаблона \d{4}
, чтобы сопоставить 4-значные куски как целые слова.и избегайте частичных совпадений в строках, таких как 1234567890
.