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
相关产品推荐
相关产品推荐

