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

使用Pandas contains()查询DataFrame列文本返回空Series的问题排查

问题原因与解决办法

核心问题出在str.contains()的默认行为上:它默认把传入的字符串当作正则表达式解析,而电影名里的()是正则的特殊元字符(用来表示分组),不是普通字符,所以直接用完整的电影名去匹配时,正则引擎会把括号解析成语法,自然匹配不到原字符串。

给你三种可行的解决方式:

方式一:关闭正则匹配

直接给str.contains()加上regex=False参数,让它按普通字符串做包含匹配:

import pandas as pd

df = pd.read_csv("fandango_score_comparison.csv")
df.drop_duplicates(subset=["FILM"], inplace=True, ignore_index=True)

movie_name = df.FILM.iloc[0]
# 添加regex=False,按普通字符串匹配
movie_df = df[df["FILM"].str.contains(movie_name, regex=False)]

方式二:转义正则特殊字符

如果需要保留正则功能(比如模糊匹配),可以用re.escape()把电影名里的特殊字符转义成普通字符:

import pandas as pd
import re

df = pd.read_csv("fandango_score_comparison.csv")
df.drop_duplicates(subset=["FILM"], inplace=True, ignore_index=True)

movie_name = df.FILM.iloc[0]
# 转义特殊字符后再匹配
movie_df = df[df["FILM"].str.contains(re.escape(movie_name))]

方式三:精确匹配(更高效)

如果你只是要精准定位某一行,直接用==做精确匹配比str.contains()更高效:

import pandas as pd

df = pd.read_csv("fandango_score_comparison.csv")
df.drop_duplicates(subset=["FILM"], inplace=True, ignore_index=True)

movie_name = df.FILM.iloc[0]
# 精确匹配电影名
movie_df = df[df["FILM"] == movie_name]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 03:31:03