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

使用astype修改year列类型为int后数据类型仍为object怎么办

Pandas astype转换year列类型失败的常见原因及解决方法

1. 未对转换结果赋值

pandas中astype()方法默认不会修改原DataFrame,而是返回一个转换类型后的新对象,你原来的写法只执行了转换操作但没有把结果赋值给原变量,自然看不到变更。正确写法如下:

df = df.astype({'year': int})

2. 列内存在无法转换为int的异常值

如果已经赋值但类型还是object,说明year列中存在不符合整数格式的内容,常见情况包括:

  • 存在非数字字符串,比如'202x'、' 2023'(带前后空格)、''(空字符串)
  • 存在空值NaN,旧版本pandas的原生int类型不支持存储空值,列中只要有NaN就会自动被推导为object类型,这种情况可以改用pandas的可空整数类型Int64:
    df['year'] = df['year'].astype('Int64')
    
  • 执行转换时加了errors='ignore'参数,遇到转换错误时会直接返回原列数据不抛出异常,自然看不到转换效果。

3. 排查方法

你可以先执行以下代码检查列内的异常内容:

# 筛选出无法转换为数字的异常值
invalid_values = df['year'][pd.to_numeric(df['year'], errors='coerce').isna()]
print(invalid_values)

清理完异常值后再执行类型转换即可生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 12:54:07