请解释以下Python代码:如何从DataFrame逐元素取值并校验?
代码执行逻辑解释
这段代码的核心目的是找出DataFrame「Annual Salary」列中无法转换为浮点数的无效薪资数据,下面分模块拆解执行逻辑:
1. 校验函数 detection_error
这个函数负责单个元素的有效性校验:
- 接收参数
element,也就是列中的每一个薪资值 - 尝试将
element转换为float类型:- 转换成功时,函数无显式返回值(默认返回
None) - 转换失败(抛出
ValueError,比如元素是字符串、特殊符号这类非数字内容),则返回该element本身
- 转换成功时,函数无显式返回值(默认返回
2. 批量处理与结果筛选
这行代码完成对整列的批量校验和无效数据提取:
print(df["Annual Salary"].apply(detection_error).loc[df["Annual Salary"].apply(detection_error).notna()].values)
拆解执行步骤:
df["Annual Salary"].apply(detection_error):对列内每一个元素依次调用detection_error函数,生成新Series——能转成浮点数的位置为None,不能转换的位置保留原元素.notna():将上述Series转为布尔值Series,保留原元素的位置(非None)为True,None的位置为False.loc[...]:通过布尔值Series筛选出True对应的行,即所有无法转成浮点数的无效薪资数据.values:将筛选结果转为numpy数组格式,最终打印输出
举个实际例子:如果「Annual Salary」列包含["50000", "abc", "65000", "NaN"],处理后会输出array(['abc'], dtype=object)
内容的提问来源于stack exchange,提问作者bhavani hegde
相关产品推荐
相关产品推荐

