Python 提取';年份';从数据帧中的字符串列表

Python 提取';年份';从数据帧中的字符串列表,python,pandas,Python,Pandas,我有一个名为['title']的列和字符串值的熊猫数据集,如“Robert Hall 2015 Viognier”和“Woodinville Wine Cellars 2012 Reserve”。我试图遍历每一行,将年份提取为整数,但是字符串彼此不同,年份也不在同一点上 请发布您的代码。这里有一个提示: import re mystring = "Woodinville Wine Cellars 2012 Reserve" match = re.search('\d{4}', mystri

我有一个名为['title']的列和字符串值的熊猫数据集,如“Robert Hall 2015 Viognier”和“Woodinville Wine Cellars 2012 Reserve”。我试图遍历每一行,将年份提取为整数,但是字符串彼此不同,年份也不在同一点上

请发布您的代码。这里有一个提示:

import re

mystring =  "Woodinville Wine Cellars 2012 Reserve"

match = re.search('\d{4}', mystring )
print(match.group(0))
'2012'

这适用于任何包含4位格式日期的字符串。

您可以将
str.extract
方法与正则表达式一起使用:

df['title'].str.extract('\d{4}').astype(int)

是一个关于正则表达式的速成课程(请在右侧的“课程笔记”中查找摘要)。

您可以使用正则表达式检查字符串是否包含一行4位数字,并使用
匹配
提取它们

/**
*从给定的标题中获得一年。
*@param{string}title从中提取年份的标题。
*@返回{?number}提取的年份。如果返回undefined,则找不到年份。
*/
函数getYearFromTitle(标题)
{
//确保标题是字符串
如果(typeof title!=“string”)抛出新错误(“typeof title必须是字符串!”);
//对4位数字执行正则表达式搜索
const results=title.match(/\d{4}/);
//如果结果为null,则返回undefined。
如果(!results)返回;
//以数字形式返回第一次出现的4位数字。
返回编号(结果[0]);
}
注意:这是JavaScript代码,您必须用python编写等效代码


您尝试了什么?代码在哪里?请提供更广泛的数据示例,以及预期的输出。