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

Pandas使用.loc按列内容创建子集的语法问题排查

问题分析与解决

为什么你的代码返回空子集?

你写的df["Country Code"] == ("IRL", "FRA", "IND")是在做逐行判断:当前行的Country Code值是否完全等于整个元组("IRL", "FRA", "IND")。但你的数据里Country Code都是单个字符串(比如"IRL"),没有任何一行的取值是这个三元组,所以这个判断会返回全False的布尔序列,.loc用这个序列索引自然就得到空子集了。

另外注意:你的数据集里列名是Country code(小写code),如果代码里写的"Country Code"(大写Code)和实际列名不一致,理论上会抛出KeyError,但你没报错,说明实际列名应该是Country Code,如果是笔误的话也要统一列名。

正确的筛选写法

要筛选多个指定取值的行,Pandas里最简洁的方式是用isin()方法:

subset = df.loc[df["Country Code"].isin(["IRL", "FRA", "IND"])]

isin()会逐行检查当前值是否在传入的列表(或元组、集合)中,符合条件的行会返回True,最终就能筛选出目标行。

如果想用逻辑或的方式拼接条件,也可以这么写(注意每个条件要加括号):

subset = df.loc[(df["Country Code"] == "IRL") | (df["Country Code"] == "FRA") | (df["Country Code"] == "IND")]

这种写法适合取值较少的情况,取值多的时候不如isin()简洁。

预期结果

执行正确代码后,会返回以下行:

Country CodeValue
IRL10
IRL12
IRL11
FRA15
FRA16
IND9
IND11

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 18:55:32