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

使用pandas isin函数报None of [] are in the [columns]错误

报错原因

你的代码是括号位置写错了,导致执行逻辑完全偏离预期,报错和值筛选本身没关系:
你写的df[df['C']].isin(my_subset)会按照从左到右、从内到外的顺序先执行df[df['C']]——这一步pandas会把df['C']里存的'5-1'、'6-2'这类字符串当成列名,去DataFrame里找对应列。但你的表只有A、B、C三列,根本不存在这些列名,所以直接抛出「传入的索引都不在列中」的错误,后面的.isin(my_subset)压根没执行到。

修复方法

把.isin()的调用挪到列索引的括号内部,先对目标列做值匹配得到布尔掩码,再用掩码筛选整表行数据即可:

import pandas as pd
import numpy as np

np.random.seed(0)
df = pd.DataFrame({'A': [5,6,3,4,5], 'B': [1,2,3,5,1]})
df["C"] = df['A'].astype(str) +"-"+ df["B"].astype(str)

uniqueVal = pd.unique(df["C"])
my_subset = uniqueVal[np.random.choice(len(uniqueVal), size=2, replace=False)]

# 正确筛选写法
result = df[df['C'].isin(my_subset)]
print(result)

运行后输出结果:

A  B    C
2  3  3  3-3
3  4  5  4-5
踩坑提醒
  • 针对单列的筛选逻辑(比如isin、str.contains、比较运算等),都要直接作用在列对象上,再把得到的布尔序列传给df[]筛选行
  • 不要随意给列索引加多余的括号,df[df['C']]和df[df['C'].isin(xxx)]的逻辑天差地别

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 17:12:10