将DataFrame列转为float类型时遇NoneType错误求解决方案
解决办法
报错原因是你的列里除了"..",还存在None类型的值。你的lambda表达式只处理了x == ".."的情况,当x是None时,x != ".."为True,会执行float(x),但None无法被float()转换,因此触发TypeError。
推荐两种修复方案:
方案1:修改lambda表达式,同时处理".."和None
直接在判断条件里把None也纳入:
import numpy as np df['col'] = df['col'].apply(lambda x: float(x) if x not in ["..", None] else np.nan)
方案2:使用pandas内置的pd.to_numeric(更推荐)
pd.to_numeric是专门处理数值转换的函数,errors='coerce'参数会自动把所有无法转为数值的内容(包括".."、None、其他非数值字符串)转为np.nan,代码更简洁且效率更高:
import pandas as pd df['col'] = pd.to_numeric(df['col'], errors='coerce')
内容的提问来源于stack exchange,提问作者Julieta M.
相关产品推荐
相关产品推荐

