Обновить 1-й столбец на основе строки, присутствующей во 2-м столбце - PullRequest
0 голосов
/ 07 марта 2020

Я хочу обновить цену 2 раза, если есть «купить 1, получить 1 50%» и 3 раза, если «купить 1 получить 1 40%»

  1. Цена | Special_Offer
  2. 330 | КУПИТЬ 1 ПОЛУЧИТЬ 1 50%
  3. 810 | КУПИТЬ 1 ПОЛУЧИТЬ 1, 40%
  4. 210 | КУПИТЬ 1, ПОЛУЧИТЬ 1 при 50%

Ниже приведен мой код, но он не работает

DF["Price"]=np.where(DF["Special Offer"].str.contains(r"(BUY 1)(GET1)(50%)",case=False,regex=True),DF["Price]*2,DF["Price])

1 Ответ

0 голосов
/ 07 марта 2020

Вы забыли пробелы между ними, а также не группируете скобками. Как я понимаю, вы хотите захватить цену. Таким образом, мы фиксируем это с помощью \ d + и проверяем, существует ли необходимый контекст с таким прогнозом, как (? = \ | КУПИТЬ 1 GET 1 50%)

\d+(?= ?\| ?BUY 1[, ] ?GET 1(?:,? ?| at )50%)
\d+(?= ?\| ?BUY 1[, ] ?GET 1(?:, ?| at )40%)

demo

https://regex101.com/r/vG1kzW/3

https://regex101.com/r/QImMZf/2

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...