我使用以下代码创建一个新列,其值基于我的Python数据帧的另外两列中的值派生 .
# Create a list to store the data
MSP = []
for row in df_EVENT5_18['FLT']:
if df_EVENT5_18['FLT'].str.contains('1234') & df_EVENT5_18['AR'].str.contains('ABC1'):
MSP.append(29)
elif (df_EVENT5_18['FLT'].str.contains('1234')) & (df_EVENT5_18['AR'].str.contains('ABC2')):
MSP.append(25)
else:
MSP.append('')
# Create a new column from the list
df_EVENT5_18['MSP'] = MSP
当我运行上面的代码时,我收到以下错误:
ValueError:系列的真值是不明确的 . 使用a.empty,a.bool(),a.item(),a.any()或a.all() .
2 回答
任何时候你认为你需要一个熊猫循环,再次检查你的代码 . 一个线索是你有
for row in df_EVENT5_18['FLT']:
,但你永远不会使用row
.查找与字符串匹配的标记
在这种情况下,我们可以简单地使用布尔评估来获取我们想要设置的索引:
使用布尔系列设置值
然后根据需要设置适当的行:
测试代码:
结果:
尝试这样的事情: