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

使用pd.read_csv读取CSV后,如何将object类型year列转为int?

解决year列整数类型转换问题

问题原因拆解

  • 执行df['year'] = df['year'].astype(int)报错,是因为列中存在字符串'None',而非pandas默认的缺失值(pd.NA/np.nan),纯整数类型无法识别这类字符串。
  • 执行df['year'] = df['year'].astype(str).astype('Int64')报错,是因为object列可能混有非字符串元素,或未先清理无效字符串值,导致无法直接转换为带缺失值的整数类型Int64。

具体解决方案

1. 先清理无效字符串值

把列中的'None'字符串替换成pandas标准缺失值,为后续转换铺路:

import pandas as pd

# 将字符串'None'替换为pd.NA
df['year'] = df['year'].replace('None', pd.NA)

2. 转换为支持缺失值的整数类型

用pd.to_numeric自动处理数值转换,同时强制将无法转换的内容转为缺失值,最后转为Int64类型(大写I,支持缺失值存储):

# 转换为数值类型,无法转换的设为缺失值,再转为Int64
df['year'] = pd.to_numeric(df['year'], errors='coerce').astype('Int64')

可选:一步完成清理与转换

也可以合并成一行代码,直接处理所有无效值:

df['year'] = pd.to_numeric(df['year'], errors='coerce').astype('Int64')
  • errors='coerce':自动把所有无法转为数值的内容(包括'None'、非数字字符串)转为np.nan
  • astype('Int64'):将浮点类型的数值转为支持缺失值的整数类型

验证转换结果

转换后可以用以下命令确认效果:

# 查看列数据类型
print(df['year'].dtype)
# 统计缺失值数量
print(df['year'].isna().sum())

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 22:30:57