我正在尝试创建一个年份列,其中年份取自数据框中的标题列。此代码有效,但列 dtype 是对象。例如,在第 1 行中,年份显示为 [2013]。我该怎么做,但将列 dtype 更改为浮点数?year_list = []for i in range(title_length): year = re.findall('\d{4}', wine['title'][i]) year_list.append(year)wine['year'] = year_list这是我的数据框的头部:country designation points province title yearItaly Vulkà Bianco 87 Sicily Nicosia 2013 Vulkà Bianco [2013]
2 回答

叮当猫咪
TA贡献1776条经验 获得超12个赞
相反的re.findall
是返回字符串列表,你可以使用str.extract()
:
wine['year'] = wine['title'].str.extract(r'\b(\d{4})\b')
或者,如果您只想匹配 1900-2000 年:
wine['year'] = wine['title'].str.extract(r'\b((?:19|20)\d{2})\b')
请注意,模式 instr.extract
必须至少包含 1 个捕获组,其值将用于填充新列。只会考虑第一个匹配项,因此如果需要,您可能需要稍后精确确定上下文。
我建议\b
在\d{4}
模式周围使用单词边界来匹配作为整个单词的 4 位块,并避免在像1234567890
.
添加回答
举报
0/150
提交
取消