如何在DataFrame列中搜索包含特定字符串的行(适配多值场景)
现有代码的逻辑是判断整行是否存在完全等于Sci-fi的单元格,仅能匹配单分类行,多分类逗号拼接的字符串和Sci-fi不完全相等,因此无法命中。
你可以使用pandas提供的字符串匹配方法str.contains()针对分类列做子串匹配,实现需求:
如果明确第一列的列名(假设为genre),可直接按列名调用:
sci_fi_df = df[df['genre'].str.contains('Sci-fi', na=False)]
如果不想硬编码列名,可按位置取第一列处理:
sci_fi_df = df[df.iloc[:, 0].str.contains('Sci-fi', na=False)]
可选优化
如果需要兼容大小写不一致的分类写法(比如sci-fi、SCI-FI),可以添加case=False参数忽略大小写:
sci_fi_df = df[df.iloc[:, 0].str.contains('Sci-fi', na=False, case=False)]
na=False参数用于处理分类列存在空值的场景,空值会直接返回False,避免匹配过程中抛出异常。
内容的提问来源于stack exchange,提问作者Tasha
相关产品推荐
相关产品推荐

