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

DataFrame查询时'int'不可迭代错误的原因及解决方法

pandas DataFrame.query() 报错 TypeError 的原因与解决方法

错误原因

问题核心是带空格的列名Plaza ID的引用方式错误:
在你的query()语句中,用单引号包裹'Plaza ID',pandas会将其解析为字符串字面量,而非DataFrame的列名。这导致代码实际在执行字符串 == 整数的无效比较,后续pandas内部处理时,错误地将整数5当作可迭代对象尝试x in y操作,最终抛出TypeError: argument of type 'int' is not iterable。

解决方法

方法1:用反引号包裹带空格的列名(推荐)

这是query()方法中处理含空格/特殊字符列名的标准方式:

# 使用 & 作为逻辑运算符
sample_to_work_on = df.query("`Plaza ID` == 5 & Date > '2016-12-30' & Date < '2017-05-01'")

# 或用 and 替代 &,可读性更好
sample_to_work_on = df.query("`Plaza ID` == 5 and Date > '2016-12-30' and Date < '2017-05-01'")

方法2:使用布尔索引替代query()

对于带空格的列名,直接用布尔索引的方式更直观,不易出错:

sample_to_work_on = df[(df['Plaza ID'] == 5) & (df['Date'] > '2016-12-30') & (df['Date'] < '2017-05-01')]

方法3:用DataFrame对象直接引用列名

在query()中通过df['列名']的方式指定带空格的列:

sample_to_work_on = df.query("df['Plaza ID'] == 5 & Date > '2016-12-30' & Date < '2017-05-01'")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 07:05:20