Python中df.apply()报AttributeError:NoneType无split属性的解决方法
解决AttributeError: 'NoneType' object has no attribute 'split'问题
方案1:修改lambda处理None值
直接在apply的lambda表达式里增加None值判断,避免调用split()方法时出错:
from datetime import datetime # 确保导入datetime模块 start = datetime.now() df_no_dup["tag_count"] = df_no_dup["Tags"].apply(lambda text: len(text.split(" ")) if text is not None else 0) print("Time taken to run this cell :", datetime.now() - start) df_no_dup.head()
方案2:使用Pandas矢量化操作(更高效)
Pandas的字符串方法支持直接处理缺失值,比apply的循环方式性能更好,推荐使用:
from datetime import datetime start = datetime.now() # str.split()会自动忽略NaN/None,返回空列表,str.len()计算长度为空时返回0 df_no_dup["tag_count"] = df_no_dup["Tags"].str.split(" ").str.len().fillna(0).astype(int) print("Time taken to run this cell :", datetime.now() - start) df_no_dup.head()
说明
- 方案1通过显式判断
text is not None,当遇到空值时直接返回0(可根据需求调整返回值,比如返回NaN)。 - 方案2利用Pandas的矢量化字符串操作,无需手动循环,处理大数据集时速度更快,
fillna(0)确保空值对应的标签数为0,astype(int)将结果转为整数类型。
内容的提问来源于stack exchange,提问作者nesly
相关产品推荐
相关产品推荐

