Сопоставление с образцом в списке строк, создание нового столбца в пандах - PullRequest
0 голосов
/ 28 августа 2018

У меня есть файл данных pandas со следующим общим форматом:

id,product_name_extract
1,00012CDN
2,14311121NDC
3,NDC37ba
4,47CD27

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

product_name = ['12CDN','21NDC','37ba','7CD2']

id,product_name_extract,product_name_mapped
1,00012CDN,12CDN
2,14311121NDC,21NDC
3,NDC37ba,37ba
4,47CD27,7CD2

Я не слишком беспокоюсь о возможных столкновениях.

Это было бы достаточно просто, если бы мне просто был нужен индикатор True / False, использующий содержащийся, и значения списка, объединенные вместе с "|" для чередования, но сейчас я немного озадачен тем, как создать значение столбца с точным соответствием. Любые советы или хитрость приветствуется!

1 Ответ

0 голосов
/ 28 августа 2018

Поскольку вы не беспокоитесь о коллизиях, вы можете присоединиться к списку product_name с оператором | и использовать его в качестве регулярного выражения:

df['product_name_mapped'] = (df.product_name_extract.str
                             .findall('|'.join(product_name))
                             .str[0])

Результат:

>>> df
   id product_name_extract product_name_mapped
0   1             00012CDN               12CDN
1   2          14311121NDC               21NDC
2   3              NDC37ba                37ba
3   4               47CD27                7CD2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...