Pandas含None的字符串列转整数失败问题咨询
解决方案
问题根源
- 列名引用错误:你的代码中
df[column]缺少引号,应写成df['column'](若column不是预先定义的变量),否则无法正确选中目标列,原列数据根本没被修改。 - 字符串"None"未被识别:列中的
"None"是字符串字面量,不是Python原生的None对象,pd.to_numeric无法自动将其判定为缺失值。
修正步骤与代码
先把字符串"None"替换为Pandas能识别的缺失值,再执行类型转换:
import pandas as pd # 示例DataFrame df = pd.DataFrame({'column': ['1', '2', 'None']}) # 1. 将字符串"None"替换为Pandas缺失值pd.NA df['column'] = df['column'].replace('None', pd.NA) # 2. 转换为数值类型,填充缺失值为0,最后转为int类型 df['column'] = pd.to_numeric(df['column'], errors='coerce').fillna(0).astype(int) # 验证结果 print(df.dtypes) print(df)
运行结果
column int32 dtype: object column 0 1 1 2 2 0
一步到位写法
如果想简化代码,可以合并为一行:
df['column'] = pd.to_numeric(df['column'].replace('None', pd.NA), errors='coerce').fillna(0).astype(int)
内容的提问来源于stack exchange,提问作者Avenger
相关产品推荐
相关产品推荐

