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

Pandas如何筛选含指定词汇的DataFrame行及报错处理

报错原因

str.extract()的作用是从字符串中提取匹配正则规则的子串并返回新的DataFrame/Series,要求传入的正则必须包含至少1个捕获组(即圆括号包裹的匹配片段),你传入的正则没有捕获组,同时这个方法本身也不适合用来做行筛选的布尔判断,属于方法选型错误。

你用的Netflix公开数据集中genres字段是以字符串格式存储的列表值,例如['comedy', 'romance'],要做包含判断不需要用extract,用对应方法直接做布尔筛选即可。

实现代码

快速筛选(无需转换字段格式)

直接通过字符串包含匹配筛选,注意加na=False跳过genres为空的记录,避免空值导致的判断异常:

  • 筛选所有包含comedy类型的记录:
df_comedy = df[df['genres'].str.contains("'comedy'", na=False)]
  • 筛选同时包含comedy和fantasy两种类型的记录:
df_comedy_fantasy = df[
    df['genres'].str.contains("'comedy'", na=False)
    & df['genres'].str.contains("'fantasy'", na=False)
]

严谨筛选(推荐频繁按类型筛选时使用)

字符串子串匹配存在极小概率误判可能(如果存在名称包含comedy的其他分类标签),可以先把字符串格式的genres转为真正的Python列表,再做成员判断:

import ast
# 转换字段格式:字符串列表转真实列表
df['genres'] = df['genres'].apply(
    lambda x: ast.literal_eval(x) if pd.notna(x) else []
)

# 筛选含comedy的记录
df_comedy = df[df['genres'].apply(lambda x: 'comedy' in x)]
# 筛选同时含comedy和fantasy的记录
df_comedy_fantasy = df[df['genres'].apply(
    lambda x: 'comedy' in x and 'fantasy' in x
)]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 06:06:55