为啥我会收到 ValueError:Series 的真值不明确。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()

Posted

技术标签:

【中文标题】为啥我会收到 ValueError:Series 的真值不明确。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()【英文标题】:Why am I getting ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all()为什么我会收到 ValueError:Series 的真值不明确。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all() 【发布时间】:2020-04-08 13:29:55 【问题描述】:

以下代码给出了值错误:

major_males=[]

for row in recent_grads:
    if recent_grads['Men']>recent_grads['Women']:
        major_males.append(recent_grads['Major'])
display(major_males)  

ValueError:Series 的真值不明确。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()

【问题讨论】:

【参考方案1】:

那是因为您正在比较一个系列而不是一个值。 我猜你的意图是if row['Men'] > row['Women']

其次这样做会更有效率


major_males = recent_grads[recent_grads.Men > recent_grads.Women].Major.to_list()

【讨论】:

【参考方案2】:

如果 recent_grads 是一个数据框,那么这就是你的 for 循环的样子

major_males=[]

for i, row in recent_grads.iterrows():
    if row['Men']>row['Women']:
        major_males.append(row['Major'])
display(major_males)  

【讨论】:

【参考方案3】:

请注意,当您遍历数据框时,您并没有使用 row 变量。相反,请尝试:

major_males=[]

for row in recent_grads:
    if row['Men']>row['Women']:
        major_males.append(row['Major'])
display(major_males)  

您收到错误是因为将所有 Men 值与所有 Women 值进行比较没有意义:相反,您想一次比较每个值的一个特定值,这就是更改的作用。

【讨论】:

试过但得到:TypeError: string indices must be integers 我认为他错过了.iterrows() 部分。

以上是关于为啥我会收到 ValueError:Series 的真值不明确。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()的主要内容,如果未能解决你的问题,请参考以下文章

收到“ValueError:Series 的真值不明确。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()。”创建seaborn catplot时[重复]

DataFrame 列比较引发 ValueError:Series 的真值不明确。 [复制]

为啥我收到此错误“ValueError:无法从重复轴重新索引”?

ValueError:无法强制转换为 Series,长度必须为 1:给定 n

ValueError: Series 的真值不明确(API NaN 处理)

将 Pandas 列传递给函数时出现“ValueError:Series 的真值不明确”