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

Pandas使用isin筛选DataFrame无返回结果问题排查

问题根因

代码返回空结果的核心错误是数据类型不匹配:
你的Code列存储的是整数类型值(1/2/3),但筛选时传入isin()的是字符串列表['1'],整数和字符串无法匹配,导致第一步筛选得到的DFN是空表,后续基于空表提取颜色列表做二次筛选,自然返回空结果。

修正代码

只需要把isin()内的字符串元素改为对应整数即可,完整可运行代码如下:

import pandas as pd

# 复现原始测试数据
DF = pd.DataFrame({
    'Name': ['Test', 'Test2', 'Test3', 'Test4', 'Test5'],
    'Code': [1, 1, 2, 3, 3],
    'Color': ['red', 'blue', 'red', 'blue', 'black']
})

# 修正类型匹配问题
DFN = DF.loc[DF['Code'].isin([1])].reset_index(drop=True)
DFCode = DF.loc[DF['Color'].isin(DFN['Color'].tolist())].reset_index(drop=True)
运行结果

执行后DFCode输出完全符合你的预期:

NameCodeColor
Test1red
Test21blue
Test32red
Test43blue

补充提示:如果无法提前确认Code列的存储类型,可以先执行print(DF['Code'].dtype)查看类型:如果是object/字符串类型,筛选时传['1'];如果是int64/整数类型,筛选时传[1]。如果需要兼容两种类型场景,也可以先统一转换列类型再筛选:DF.loc[DF['Code'].astype(str).isin(['1'])],但更推荐先明确字段类型再写匹配逻辑,避免隐式转换引发的异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 22:24:18