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

Pandas处理DataFrame后无法将CUSNO列转为int64类型的问题

解决Pandas中CUSNO列从float64转为int64的问题

核心原因

用pd.to_numeric(..., errors='coerce')转换时,只要出现过NaN值,Pandas就会把列类型设为float64——哪怕你删除了含NaN的行,列的 dtype 不会自动变回整数类型,得手动转换。

分步解决代码

  1. 加载并预处理数据
    先确保彻底清除含NaN的行,一定要把处理结果赋值回原DataFrame:
import pandas as pd
# 加载|分隔的CSV
cl = pd.read_csv('你的数据文件.csv', sep='|')
# 转换CUSNO为数值,非数值转NaN
cl['CUSNO'] = pd.to_numeric(cl['CUSNO'], errors='coerce')
# 删除含NaN的行,subset指定只检查CUSNO列
cl = cl.dropna(subset=['CUSNO'])
  1. 转换为int64类型
    此时列中已无NaN,直接用astype转换即可:
cl['CUSNO'] = cl['CUSNO'].astype('int64')

如果你担心有隐藏的缺失值(比如没删干净),可以用downcast参数强制转整数:

cl['CUSNO'] = pd.to_numeric(cl['CUSNO'], downcast='integer')

要是后续可能再出现缺失值,推荐用Pandas的可空整数类型(大写I的Int64):

cl['CUSNO'] = cl['CUSNO'].astype('Int64')

注意事项

  • 别漏了把dropna的结果赋值回cl,只跑cl.dropna()不会修改原DataFrame,列里还留着NaN,转int肯定报错。
  • 你用的Pandas 1.5.3和2.2.1都支持上述方法,无需担心版本兼容问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 17:10:02