Как вернуть совпадение со строкой, содержащей скобки в пандах? - PullRequest
1 голос
/ 21 октября 2019

У меня есть часть моего кода, извлекающая элемент из столбца 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'])

1 Ответ

2 голосов
/ 21 октября 2019

Если вы используете str.contains, вам нужно экранировать '(' и ')' в name, потому что они являются специальными символами в регулярном выражении следующим образом

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...