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

DataFrame中object类型列转int遇'null'报错,求解决方法

解决将object类型的value列转为int时的"invalid literal for int() with base 10: 'null'"错误

这个问题我遇到过好多次啦,核心原因是你的value列里藏着字符串形式的'null',而不是pandas默认识别的缺失值NaN,直接用astype()转换自然会报错——Python可没法把字符串'null'转成整数。给你两种靠谱的解决办法:

方法一:先替换'null'为NaN,再处理缺失值后转类型

先把字符串'null'替换成真正的缺失值,再根据你的需求处理缺失值(删除或填充),最后转换数据类型:

import pandas as pd
import numpy as np

# 1. 将字符串'null'替换为pandas识别的NaN
device_age['value'] = device_age['value'].replace('null', np.nan)

# 2. 处理缺失值(二选一)
# 选项A:删除包含缺失值的行
device_age = device_age.dropna(subset=['value'])
# 选项B:用中位数/均值填充(根据业务场景选择)
device_age['value'] = device_age['value'].fillna(device_age['value'].astype(float).median())

# 3. 转换为int类型
device_age['value'] = device_age['value'].astype(np.int64)

方法二:用pd.to_numeric一键处理无效值

pandas的pd.to_numeric函数自带错误处理能力,可以直接把无法转换的字符串转为NaN,步骤更简洁:

import pandas as pd
import numpy as np

# 转换为数值类型,无法转换的'null'会被转为NaN
device_age['value'] = pd.to_numeric(device_age['value'], errors='coerce')

# 处理缺失值后转int(这里用0填充,你可以换成其他合适的值)
device_age['value'] = device_age['value'].fillna(0).astype(np.int64)

两种方法都能解决你的问题,具体选哪种取决于你对缺失值的处理策略~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 03:53:11