我使用str.contains()从数据帧中搜索电影名称,但没有得到任何输出,但当我有部分字符串时,它会正确地给出输出。我想要的是如何使这个代码段在部分和完整字符串匹配中都能正确工作
在部分字符串上使用contains,如果我在minList中仅使用“(第1卷)”,我将获得正确的输出或如下所示的输出
minList = ['Star Wars: Clone Wars']
for k in minList:
print(df[df.name.str.contains(k,case=False,na=False)]["name"])
3208 Star Wars: Clone Wars (Volume 1) Name: name, dtype: object
在完整字符串上使用contains
minList = ['Star Wars: Clone Wars (Volume 1)']
for k in minList:
print(df[df.name.str.contains(k,case=False,na=False)]["name"])
而且没有输出
Series([], Name: name, dtype: object)
也尝试过使用查询()
minList = ['Star Wars: Clone Wars (Volume 1)']
for k in minList:
print(df.query('name.str.contains("' + k + '")',engine='python')['name'])
但没有产出
Series([], Name: name, dtype: object)
将参数
regex=False
添加到str.contains()
调用str.contains()
默认情况下将第一个参数作为正则表达式(regex)。因此,括号被视为正则表达式符号,与括号不匹配演示
如果要将字符串与
regex=True
匹配,则需要将作为第一个参数传递的字符串修改为:演示
在这里,我们使用
\(
代替(
,使用\)
代替)
。我们还使用原始字符串r'....'
来引用整个字符串,这样就不需要对被视为正则表达式的字符串使用双斜杠相关问题 更多 >
编程相关推荐