Python从CSV文件birth_date列提取年份及代码报错解决咨询
解决Pandas提取出生日期年份的问题
报错原因及修复方案
你的代码报错核心原因是birth_date列存在无法转成datetime格式的无效值(比如空字符串、非日期文本、缺失值等),按以下步骤即可解决:
1. 安全转换日期格式
在pd.to_datetime中添加errors='coerce'参数,把无法识别的无效值转为NaT(Pandas的缺失时间标记),避免程序因报错中断:
import pandas as pd df_data = pd.read_csv('nobel_prize_data.csv') # 安全转换日期,无效值自动转为NaT df_data['birth_date'] = pd.to_datetime(df_data['birth_date'], errors='coerce')
2. 提取年份到新列
日期转换完成后,用.dt.year直接提取年份,生成新列(比如命名为birth_year):
df_data['birth_year'] = df_data['birth_date'].dt.year
3. 可选:处理缺失年份
转换后NaT对应的年份会是NaN,可根据需求填充:
# 用0填充缺失年份并转为整数 df_data['birth_year'] = df_data['birth_year'].fillna(0).astype(int) # 或者用"未知"标记缺失值 df_data['birth_year'] = df_data['birth_year'].fillna('未知')
额外排查:定位无效数据
如果想知道具体哪些值导致转换失败,可筛选出异常行:
invalid_rows = df_data[df_data['birth_date'].isna()] print(invalid_rows)
内容的提问来源于stack exchange,提问作者Venkat Karthik
相关产品推荐
相关产品推荐

