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

Pandas筛选DataFrame子集报错:Series真值模糊问题解决

问题:筛选DataFrame中check_sum列为0或1的子集报错处理

我有一个DataFrame对象DF,其中包含名为check_sum的列,需要筛选出该列值为0或1的DataFrame子集。使用了以下代码:

data_sub = DF[(DF['check_sum']==0]) or (DF['check_sum']==1])] 

运行后出现如下错误:

~\AppData\Roaming\Python\Python38\site-packages\pandas\core\generic.py in __nonzero__(self)
   1440     @final
   1441     def __nonzero__(self):
-> 1442         raise ValueError(
   1443             f"The truth value of a {type(self).__name__} is ambiguous. "
   1444             "Use a.empty, a.bool(), a.item(), a.any() or a.all()."

ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

解决方案

方法1:使用按位或运算符|替换逻辑或or

Python的or仅支持单个布尔值的逻辑判断,而pandas的布尔Series需要用**按位或运算符|**实现元素级的或操作,同时每个条件需用括号包裹:

data_sub = DF[(DF['check_sum'] == 0) | (DF['check_sum'] == 1)]

方法2:使用isin()方法(推荐,更简洁)

直接用isin()检查列值是否在指定列表中,写法直观,尤其适合多值筛选场景:

data_sub = DF[DF['check_sum'].isin([0, 1])]

方法3:使用query()方法类SQL式筛选

如果偏好类SQL的语法,可以用query()方法实现:

data_sub = DF.query("check_sum in [0, 1]")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 02:00:15