You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pandas循环判断报错ValueError: The truth value of a Series is ambiguous如何解决

问题原因

你触发报错的核心原因是:first['Was Voter Mafia?'] 调用的是整个DataFrame的Was Voter Mafia?列,返回的是完整的布尔值Series,而if判断只能接收单个布尔值,pandas无法判定一整列的布尔结果在if逻辑里的含义,因此抛出了歧义错误。你遍历每行时要读取当前行的对应字段,应该用迭代出来的row对象取值,而不是操作整个DataFrame的列。

修正方案

1. 循环写法修正

把判断里的first['Was Voter Mafia?']替换为row['Was Voter Mafia?']即可,同时注意修改行的值需要通过索引定位到原DataFrame,直接修改迭代出来的row不会生效:

for idx, row in first.iterrows():
    # 普通玩家(非狼人)成功投中狼人的情况
    if row['Was Voter Mafia?'] == 'N' and row['Was Voted Mafia?'] == 'Y':
        first.loc[idx, 'Accuracy'] = 1

2. 更高效的向量化写法(推荐)

pandas原生支持批量条件赋值,不需要写循环,性能更好代码更简洁:

# 初始化Accuracy为0
first['Accuracy'] = 0
# 满足条件的行设为1
first.loc[(first['Was Voter Mafia?'] == 'N') & (first['Was Voted Mafia?'] == 'Y'), 'Accuracy'] = 1

内容的提问来源于stack exchange,提问作者E_Sarousi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 13:15:00