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

pandas读取CSV后按多条件筛选行数据语法异常排查

问题说明

使用pandas读取csv文件并筛选符合条件的记录:

  • 仅对Geography列设置单个筛选条件时,程序可正常运行
  • 同时对Geography、Comment两列设置「与逻辑」双条件筛选时,程序运行失败,不确定是否为语法写法错误
可正常运行的代码片段
import pandas as pd
dt = pd.read_csv("data.csv", low_memory=False)
print(dt)
print(list(dt))
geo_ont = dt[dt.Geography=="Ontario"]
print(geo_ont)
运行异常的代码片段
import pandas as pd
dt = pd.read_csv("data.csv", low_memory=False)
print(dt)
print(list(dt))
geo_ont = dt[dt.Geography=="Ontario" & dt.Comment=="TRUE"]
print(geo_ont)
报错原因与修复方案

报错原因

确实是语法写法问题,核心出在运算符优先级:
Python中按位与运算符&的优先级高于比较运算符==,你写的筛选条件实际执行逻辑和预期完全不一致——代码会先计算"Ontario" & dt.Comment,也就是拿字符串和pandas的Series对象做按位与运算,直接触发类型错误,根本不会先完成两个列的等值判断、再对两个布尔结果做与操作。

修复方法

给每个独立的列判断条件套上小括号,手动指定运算优先级即可,修正后的筛选代码如下:

geo_ont = dt[(dt.Geography == "Ontario") & (dt.Comment == "TRUE")]

额外说明:如果Comment列存储的是原生布尔值、不是字符串类型的"TRUE",判断条件可以直接写dt.Comment == True,不需要给TRUE加引号。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 13:24:22