为啥我会收到 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