Python pandas条件赋值时新列值被识别为列名问题如何解决
问题解决指南
代码错误原因
loc方法的第二个参数需要传入目标列的列名字符串,你传入了data['New_Probability']整列Series对象,pandas会把Series中的值识别为要操作的列名,才会出现值被误当成列名的异常。- 你原有的偶数判断逻辑如果是针对「概率值乘以10后为偶数」的场景(比如判断概率值十分位是否为偶数)是正确的,不需要修改;如果你实际要判断的是概率值本身为整数偶数,可以把判断条件改为
data['Probability'] % 2 == 0。
修正后的实现方式
方法1:修改原有loc写法
# 初始化新列 data['New_Probability'] = data['Probability'] # 第二个参数传入列名字符串 data.loc[data['Probability'] * 10 % 2 == 0, 'New_Probability'] = data['Probability'] + 0.1
方法2:更简洁的np.where一行实现
import numpy as np data['New_Probability'] = np.where( data['Probability'] * 10 % 2 == 0, data['Probability'] + 0.1, data['Probability'] )
内容的提问来源于stack exchange,提问作者User1959
相关产品推荐
相关产品推荐

