Python如何从DataFrame列仅提取年份并生成新列?
从released列提取年份的Python解决方案
硬切片提取年份不可靠,因为不同行的日期字符串长度、格式可能存在差异,试试下面几种通用方法:
方法一:利用datetime类型提取(推荐)
如果released列是日期时间类型,或者可以转换为该类型,直接提取年份最稳妥:
import pandas as pd # 先将列转换为datetime类型(自动处理转换失败的情况) df_movies['released'] = pd.to_datetime(df_movies['released'], errors='coerce') # 提取年份到新列 df_movies['release_year'] = df_movies['released'].dt.year
方法二:正则提取年份(适用于字符串格式)
如果released是字符串格式,不管年份在字符串的哪个位置,用正则匹配四位数字的年份即可:
# 从字符串中提取四位数字的年份 df_movies['release_year'] = df_movies['released'].astype(str).str.extract(r'(\d{4})', expand=False) # 可选:将结果转为整数类型 df_movies['release_year'] = df_movies['release_year'].astype(int, errors='ignore')
方法三:针对固定格式字符串拆分
如果released是固定格式的字符串(比如YYYY-MM-DD),可以直接拆分提取:
# 针对"YYYY-MM-DD"格式拆分提取年份 df_movies['release_year'] = df_movies['released'].str.split('-').str[0]
内容的提问来源于stack exchange,提问作者vic
相关产品推荐
相关产品推荐

