Подстрока экстракта панд с необязательным рисунком - PullRequest
1 голос
/ 26 июня 2019

Из столбца df 'Desc' я хочу извлечь подстроки, начинающиеся с n или N, за которыми следует цифра, вот тест df с моим кодом и результатом:

import pandas as pd
testdf = pd.DataFrame({'Desc': ['n1.2A Full Version', 'N5.0.0 Bridge', 'N5.35A Automatic', 'n2 Bridge']})
testdf['Version'] = testdf['Desc'].str.extract(r'([nN]\d.+?[\s])', expand=False)

Как исправить регулярное выражение, чтобы оно не показывало NaN для последней записи? Спасибо

1 Ответ

1 голос
/ 26 июня 2019

Основная проблема заключается в том, что .+? требуется как минимум 1 символ, отличный от символа разрыва строки, а затем [\s] требуется пробел для сопоставления. Таким образом, когда [nN]\d соответствует и используется n2, механизм регулярных выражений пытается сопоставить следующий пробел с .+?, а затем [\s] не может найти пробел.

Вы можете использовать

>>> testdf['Desc'].str.extract(r'([nN]\d\S*)', expand=False)
0     n1.2A
1    N5.0.0
2    N5.35A
3        n2

Шаблон [nN]\d\S*:

  • [nN] - n или N
  • \d - цифра
  • \S* - 0 или более непробельных символов

См. онлайн-демонстрацию регулярных выражений и график регулярных выражений :

enter image description here

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