Pandas处理DataFrame后无法将CUSNO列转为int64类型的问题
解决Pandas中CUSNO列从float64转为int64的问题
核心原因
用pd.to_numeric(..., errors='coerce')转换时,只要出现过NaN值,Pandas就会把列类型设为float64——哪怕你删除了含NaN的行,列的 dtype 不会自动变回整数类型,得手动转换。
分步解决代码
- 加载并预处理数据
先确保彻底清除含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'])
- 转换为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
相关产品推荐
相关产品推荐

