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

Pandas DataFrame存在匹配值但条件筛选返回空结果的异常排查

异常原因

这个问题的核心是数据类型不匹配:
你DataFrame里userID列存储的值是字符串格式,而筛选时传入的是整数196,Python里字符串'196'和整数196做等值判断会返回False,所以布尔索引全为假,最终返回空DataFrame。

Surprise库加载内置ml-100k数据集时,raw_ratings属性里存储的用户ID、物品ID默认都是字符串类型,你直接基于这个属性构造DataFrame时没有做类型转换,就会出现"明明看到值存在却筛不出来"的现象。

验证方法

执行以下代码即可确认问题:

# 查看userID列的整体数据类型
print(df['userID'].dtype)
# 查看第一条记录userID值的实际类型
print(type(df.iloc[0]['userID']))

运行后你会看到列类型为object(pandas存储字符串的默认dtype),单值类型为str,而非预期的整数类型。

修复方案

二选一即可:

  • 筛选时使用字符串值做匹配
# 传入字符串'196'匹配
df[df['userID'] == '196']
  • 提前将ID列转换为整数类型,后续可直接用整数筛选
# 转换两列ID的类型
df['userID'] = df['userID'].astype(int)
df['itemID'] = df['itemID'].astype(int)
# 再执行原筛选语句即可正常返回结果
df[df['userID'] == 196]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 09:36:24