pandas新增列时使用函数正常运行,不用函数却报错是什么原因?
错误原因
data['Family Size']是Pandas的Series(整列数据)类型,执行data['Family Size'] == 0得到的是一整列布尔值,Python原生的if语句只能判断单个布尔值的真假,无法处理整列布尔值的判断逻辑,因此触发了真值模糊的ValueError。data['Is Alone'].apply(0)的用法不符合规范,apply()方法需要传入可调用的函数对象,不能直接传入固定数值。
无需自定义函数的正确实现
以下两种写法都可以直接实现需求:
写法1:布尔值强转(最简洁,无额外依赖)
利用Python中布尔值True对应1、False对应0的特性,直接转换类型即可:
data['Is Alone'] = (data['Family Size'] == 0).astype(int)
写法2:np.where条件分支(适合扩展复杂逻辑)
import numpy as np data['Is Alone'] = np.where(data['Family Size'] == 0, 1, 0)
内容的提问来源于stack exchange,提问作者Robin Sage
相关产品推荐
相关产品推荐

