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

Pandas多条件筛选DataFrame报Lengths must match to compare错误

报错原因

报错来自条件判断里的写法错误:df['Type 1']== ['Fire'] 中你用来匹配的目标值写成了长度为1的列表,而非单个字符串值。
当你对Pandas的Series对象使用==做比较时,如果右侧传入的是列表、数组类的序列对象,Pandas会默认按位置逐行对齐做相等判断,此时要求两侧的长度完全匹配——你的DataFrame有800行,对应Series长度是800,但传入的列表长度只有1,长度无法对齐就会触发该ValueError。
你提前检查三列没有缺失值的排查方向是对的,但这个问题和缺失值无关,纯粹是比较对象的类型/长度不符合要求。

修复方案

去掉['Fire']外层的方括号,直接传入标量字符串做等值判断即可,修正后的可运行代码:

df.loc[(df['Type 1'] == 'Fire') & (df['HP'] > 70) & (df['Legendary'] == False)]

补充练习提示

  • 布尔列的判断可以简化,df['Legendary'] == False等价于~df['Legendary'],写法更简洁
  • 只有当你需要匹配多个目标值的时候才需要用到列表,此时不能直接用==,要调用.isin()方法,比如要同时筛选火、水两种属性的宝可梦,写法为:df['Type 1'].isin(['Fire', 'Water'])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 04:48:18