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

使用isin()筛选DataFrame返回空结果,求原因及解决方法

问题原因及解决方法

核心原因

isin()方法的逻辑和你的需求不匹配:

  • pandas的isin()是用来检查列中的单个元素是否存在于你传入的列表里。如果你的Chord Notes列每个单元格存储的是列表对象(比如['C','E','G']),那df['Chord Notes'].isin(['C','E','G'])会把每个单元格的列表和传入列表里的字符串('C'、'E'、'G')逐一对比——列表和字符串是完全不同的类型,自然匹配失败,返回空DataFrame。

正确的筛选方式

根据你的需求(找Chord Notes列完全等于['C','E','G']的行),用以下方法:

  1. 直接相等判断
df[df['Chord Notes'] == ['C','E','G']]

这种方式严格匹配列表的元素顺序和内容,只有单元格里的列表和目标列表完全一致才会被筛选出来。

  1. 忽略顺序的匹配(用集合)
    如果不关心列表元素的顺序,可以用集合来判断:
df[df['Chord Notes'].apply(lambda x: set(x) == set(['C','E','G']))]

注意:集合会自动去重,如果你的单元格列表有重复元素,这种方式可能会误判。

  1. 包含所有目标元素的匹配
    如果是想找包含['C','E','G']所有元素的行(不管单元格里还有没有其他元素),可以用子集判断:
df[df['Chord Notes'].apply(lambda x: set(['C','E','G']).issubset(set(x)))]

内容的提问来源于stack exchange,提问作者Sir Roland Baggybottom IV

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 12:33:12