猿问

在 Pandas 中创建年份列

我正在尝试创建一个年份列,其中年份取自数据框中的标题列。此代码有效,但列 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             year

Italy     Vulkà Bianco     87        Sicily     Nicosia 2013 Vulkà Bianco   [2013]


慕虎7371278
浏览 367回答 2
2回答

墨色风雨

re.findall返回结果列表。用re.searchwine['year'] = [re.search('\d{4}', title)[0] for title in wine['title']]最好还是使用熊猫extract方法。wine['year'] = wine['title'].str.extract(r'\d{4}')定义Series.str.extract(pat, flags=0, expand=True)对于系列中的每个主题字符串,从正则表达式 pat 的第一个匹配项中提取组。

叮当猫咪

相反的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.
随时随地看视频慕课网APP

相关分类

Python
我要回答