如何使用多个布尔条件过滤pandas中的DataFrame数据
错误原因
你给布尔条件外层额外添加了方括号[],原本和DataFrame行数(长度为3)匹配的布尔序列被包裹成了长度为1的列表,pandas索引时无法匹配长度,因此抛出ValueError。
解决方法
方案1:修改原代码去掉多余方括号
注意多个布尔条件组合时,每个条件都需要用小括号包裹,避免运算符优先级错误:
# 避免使用filter作为变量名,会覆盖Python内置的filter()函数 filter_cond = (df['b'] == 2) | (df['b'] == 5) df = df[filter_cond] print(df)
方案2:多离散值匹配更推荐用isin()方法
如果是匹配同一列的多个离散值,用isin()写法更简洁,后续新增匹配值时只需修改列表参数即可:
filter_cond = df['b'].isin([2, 5]) df = df[filter_cond] print(df)
两种方案运行后均可得到你需要的结果:
a b c 0 1 2 3 1 4 5 6
内容的提问来源于stack exchange,提问作者stanvooz
相关产品推荐
相关产品推荐

