如何在熊猫中返回包含括号的字符串的匹配项?

Sd *_*unk 3 python pandas

我的部分代码Ranks通过将字符串name与另一列中的元素匹配来从列中提取元素Names

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'])

Dan*_*kin 9

正则表达式的争论。不改变基本字符串的解决方案:

df.loc[df['Names'].str.contains(name, regex=False), 'Ranks']
Run Code Online (Sandbox Code Playgroud)


And*_* L. 5

如果使用str.contains,则需要转义'('')'inname因为它们是正则表达式中的特殊字符,如下所示

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
Run Code Online (Sandbox Code Playgroud)