Замена соответствия регулярному выражению в столбце pandas измененным регулярным выражением - PullRequest
0 голосов
/ 10 февраля 2020

Я пытаюсь заменить совпадение регулярного выражения измененным регулярным выражением. Ниже приведен столбец в моем DataFrame.

    df['newcolumn']
    0    Ther was a quick brown appl_product_type in ("eds") where blah blan appl_Cust_type =("value","value")
    1    Ther was a quick brown appl_product_type = ("EDS") where blah blan appl_Cust_type =("value","value") 
    2    Ther was a quick brown appl_product_type in ("eds") where blah b                                     
    3    Ther was a quick brown appl_product_type in = ("EDS") where blah blan appl_Cust_type = ("value")     
    4    Ther was a quick brown  where blah blan appl_Cust_type                                               
    Name: newcolumn, dtype: object

Я хочу заменить каждое вхождение строк типа «appl_product_type = ('EDS')» на «upper (appl_product_type) = ('EDS') '

Я использую следующий код, но получаю сообщение об ошибке

    newcolumn.replace(value='upper\[\w]+\s+[in=]+[\s+\([\"\w+\,+\s+]+\)', regex='[\w]+\s+[in=]+[\s+\([\"\w+\,+\s+]+\)')
    error: bad escape \w at position 7

Есть ли способ решить эту проблему? Пожалуйста, помогите.

1 Ответ

1 голос
/ 10 февраля 2020

Пара вещей -

  • Вы не можете использовать \ w в качестве значения замены и ожидать, что он будет знать, что заполнить
  • Ваше регулярное выражение как есть, плохо отформатировано. используйте r'' для создания более простых строк регулярных выражений
  • ваш вопрос неясен, поскольку вы задаете один конкретный c формат, пока ваше регулярное выражение пытается поймать намного больше.

I У вас есть немного более четкое решение того, что вы пытались сделать, но я не уверен, что именно этого вы хотели, учитывая неопределенность в вашем вопросе. -

df['newcolumn'] = df['newcolumn'].replace({r'([\w_]+\s+(?:in|=|\s)+\(\"(?:\w+\"(?:\,)?(?:\s+)?)+\))' : r'upper(\1)'}, regex=True)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...