我的部分代码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'])
有正则表达式的争论。不改变基本字符串的解决方案:
df.loc[df['Names'].str.contains(name, regex=False), 'Ranks']
Run Code Online (Sandbox Code Playgroud)
如果使用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)
| 归档时间: |
|
| 查看次数: |
3371 次 |
| 最近记录: |