Python 如何返回包含括号的字符串匹配?
我的部分代码通过将字符串Python 如何返回包含括号的字符串匹配?,python,pandas,Python,Pandas,我的部分代码通过将字符串名称与另一列名称中的元素相匹配,从列中提取元素: rank=df.loc[df['Names'].str.contains(name),'Ranks'].iloc[0] 除了少数情况下name包含括号外,代码正常工作 例如,它将导致name=Banana(1998)出错 我知道str.contains可能不是这里最好的方法,但我环顾四周,似乎没有发现任何其他帖子询问同样的问题,所以我可以从那里开始工作 df的样本可通过以下方式复制: data=[['Apple',10],
名称
与另一列名称
中的元素相匹配,从列中提取元素:
rank=df.loc[df['Names'].str.contains(name),'Ranks'].iloc[0]
除了少数情况下name
包含括号外,代码正常工作
例如,它将导致name=Banana(1998)
出错
我知道str.contains可能不是这里最好的方法,但我环顾四周,似乎没有发现任何其他帖子询问同样的问题,所以我可以从那里开始工作
df的样本可通过以下方式复制:
data=[['Apple',10],'Banana(1998)'15],'Banana(2000)'14]]
df=pd.DataFrame(data,columns=['Names','Ranks'])
如果使用str.contains
,则需要在name
中转义”(“
和”)
,因为它们在regex中是特殊字符,如下所示
name = 'Banana \(1998\)'
df['Names'].str.contains(name)
Out[655]:
0 False
1 True
2 False
Name: Names, dtype: bool
df.loc[df['Names'].str.contains(name), 'Ranks']
Out[659]:
1 15
Name: Ranks, dtype: int64
有争论。不更改基本字符串的解决方案:
df.loc[df['Names'].str.contains(name, regex=False), 'Ranks']
错误是什么?同时,请尝试str.contains(name,regex=False)
您可能有空格,因此应该链接str.stripdf.loc[df['Names'].str.strip.str.contains(name)
列表或变量的名称是什么?@DanielMesejo第一个错误是sre_常量。错误:缺失),未终止的子模式位于位置8
。我尝试了str.contains(name,regex=False)
并且它给了我一个索引器
如果name
不在df['Names']
?@datanoveler name是一个变量。对于不同的name
,例如name=“Banana(1998)”
和name=“Banana(2000)”
,我需要为rank
设置不同的值。