You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pandas DataFrame提取字符串年份遇NaN问题,寻求解决办法

解决Pandas提取年份的问题

你的代码出错原因是Pandas的str切片仅支持位置索引,不支持用字符作为切片边界,所以str[',':'(']这种写法无效,导致返回全NaN。下面给几种可靠的解决方案:

方法1:正则表达式提取(推荐)

利用年份是4位数字的特征,用str.extract匹配提取:

df['year_correct'] = df['released'].astype(str).str.extract(r'(\d{4})')

原理:\d{4}匹配连续4位数字,extract会提取第一个匹配的结果作为新列值,兼容所有格式中包含4位年份的情况。

方法2:字符串分割

通过两次分割定位年份:

# 先按', '分割取第二部分,再按空格分割取第一个元素
df['year_correct'] = df['released'].astype(str).str.split(', ').str[1].str.split(' ').str[0]

或者用expand=True更直观:

df['year_correct'] = df['released'].astype(str).str.split(', ', expand=True)[1].str.split(' ', expand=True)[0]

原理:第一次分割后得到['June 13', '1980 (United States)'],取第二部分再分割就得到年份。

示例验证

假设你的DataFrame是:

import pandas as pd
df = pd.DataFrame({'released': ['June 13, 1980 (United States)', 'January 1, 2023 (Canada)']})

用上述方法处理后,year_correct列会得到['1980', '2023'],结果正确。

内容的提问来源于stack exchange,提问作者Zohaib Ahmed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 09:50:28