如何检查Pandas DataFrame中是否存在≥2的值?解决真值歧义报错
解决Pandas DataFrame真值歧义错误的方案
错误原因
你直接将df_plus1.ge(2)生成的布尔DataFrame与True比较后放入if语句,但if需要单个布尔值,而布尔DataFrame无法直接判断整体真值,因此触发ValueError。
修改代码
根据你“检查第3列开始的列是否存在≥2的值”的需求,用any()方法判断是否存在至少一个满足条件的元素即可:
df_plus1 = df_plus1.iloc[:,2:].fillna(0) # 检查是否存在任意一个≥2的值 if df_plus1.ge(2).any().any(): # 存在时执行的逻辑 print("存在大于等于2的值") else: print("没有大于等于2的值")
代码说明
df_plus1.ge(2):生成布尔DataFrame,每个元素对应原DataFrame位置的值是否≥2- 第一个
.any():检查每一列是否存在至少一个True,返回布尔Series - 第二个
.any():检查布尔Series中是否存在至少一个True,最终返回单个布尔值,符合if语句要求
若你需要检查所有元素都≥2,只需把.any().any()替换为.all().all():
if df_plus1.ge(2).all().all(): print("所有值都大于等于2")
内容的提问来源于stack exchange,提问作者hadji
相关产品推荐
相关产品推荐

