Python ValueError: Series的真值是模棱两可的。使用a.empty、a.bool()、a.item()、a.any()或a.all()。

3
当我运行以下代码时:
if df.loc[df['state_code'].isin(['12','09'])]:

出现了以下错误信息:

数值错误: 数据系列的真值不明确。
使用 a.empty,a.bool(),a.item(),a.any() 或 a.all()。

这里出了什么问题?


你能提供你的数据框吗?我怀疑 isin 可能会在某些列上返回 True,但在其他列上返回 False - MooingRawr
这不是一个纯粹的Python异常。请告诉我们您的环境情况。同时,描述一下df是什么会很有帮助。 - Simon
1个回答

6
问题告诉你,你的操作返回的Series没有内在的真值。事实上,该操作总是会返回一些东西,你必须选择你实际想要的:

  • 如果返回的值中任何一个为真,意味着df中存在一个元素在['12','09']
  • 如果返回的所有值为真,意味着df中的所有元素都在['12','09']
  • 如果返回的Series包含任何元素,意味着不是empty

所以:

if not df.loc[df['state_code'].isin(['12','09'])].empty:

或者
if df.loc[df['state_code'].isin(['12','09'])].any():

或者
if df.loc[df['state_code'].isin(['12','09'])].all():

请查看文档

如果需要更多帮助,请提供您代码的最小工作示例。


谢谢,if df.loc[df['state_code'].isin(['12','09'])].any(): 对我没用,但是 if not df.loc[df['state_code'].isin(['12','09'])].empty: 完美地解决了问题。 - borfo

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