Как извлечь символы из строки, которые заключены в скобки? - PullRequest
0 голосов
/ 11 ноября 2018

Изображение кадра данных:

У меня есть один столбец с именем контрактинг, а другой - контрактор внутри DataFrame.

Мне нужно разделить, например, подрядчик столбцов, на 2 новых столбца: один столбец, содержащий фискальный номер, заключенный в скобки, и другой столбец, содержащий все остальные (описание).

Пример:

Contractor: Meo(504615947)

Мне нужно, чтобы оно стало:

Contractor_Name: Meo and Contractor_Number:504615947

Я пытался сделать это:

proc_2013[['contractor_description', 'contractor_NIF']]= pd.DataFrame(proc_2013['contractor'].str.split(('('),1).tolist())

proc2013['contractor_NIF'] = proc2013.contractor_NIF.str.extract('(\d+)')  

Задача 1:

У меня также может быть описание имени в скобках, за которым следует номер, который я пытаюсь извлечь.

Задача 2:

Иногда, если подрядчик из другой страны, в начале фискального номера у него есть буква (не только цифры, как я предполагал сначала, используя мою вторую строку кода).

Все фискальные номера имеют 9 цифр.

Ответы [ 2 ]

0 голосов
/ 11 ноября 2018

Насколько я мог понять ваш вопрос, это может быть возможным решением,

df['contractor_name']=list(map(lambda x : x.split('(')[0],df['con']))
df['contractor_number']=list(map(lambda x : x.split('(')[-1][-10:-1],df['contractor']))

Надеюсь, это поможет.

0 голосов
/ 11 ноября 2018

Вы можете изменить \d на \w для любого буквенно-цифрового типа:

proc2013['contractor_NIF'] = proc2013.contractor_NIF.str.extract('\((\w+)\)')  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...