为什么会出现ValueError: The truth value of a Series is ambiguous错误?使用a.empty、a.bool()、a.item()、a.any()或a.all()。

3
以下代码会导致值错误:
major_males=[]

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

价值错误:Series的真实性是模糊的。请使用a.empty、a.bool()、a.item()、a.any()或a.all()。
3个回答

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)  

2

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

其次,更加高效的做法是


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

0
请注意,在遍历数据框时,您没有使用row变量。相反,请尝试以下方法:
major_males=[]

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

你之所以会出现错误,是因为将所有的Men值与所有的Women值进行比较是没有意义的:相反,你想要一次只比较一个特定的值,这就是这个改变所做的事情。

尝试过了,但是出现了错误:TypeError: 字符串索引必须为整数。 - undefined
我觉得他漏掉了.iterrows()这一部分。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接