Сопоставить столбец с собственным регулярным выражением в другом столбце Python - PullRequest
1 голос
/ 14 апреля 2020

Как сопоставить столбец данных с собственным регулярным выражением в другом столбце. Вот как это выглядит.

        Data            Regex
0   HU13568812       ^HU[0-9]{8}
1   78567899         ^NO[0-9]{5}
2   AT1234567        ^HU[0-9]{7}

Вывод будет новым столбцом для результата, если его совпадение (1) или не совпадение (0), как это.

            Data            Regex     Match
0   HU13568812       ^HU[0-9]{8}        1
1   78567899         ^NO[0-9]{5}        0
2   AT1234567        ^AT[0-9]{7}        1

Я пытался использовать re.match (), но я не могу найти совпадение для всей строки сразу. Есть ли лучший способ сделать это с помощью простой функции или более Pythoni c способ? Спасибо.

Ответы [ 2 ]

3 голосов
/ 14 апреля 2020

Один из способов - использовать понимание списка:

import re

df["Match"] = [1 if re.search(fr"{pat}", data) else 0 
               for data, pat in zip(df["Data"],df["Regex"])]

print (df)

         Data        Regex  Match
0  HU13568812  ^HU[0-9]{8}      1
1    78567899  ^NO[0-9]{5}      0
2   AT1234567  ^AT[0-9]{7}      1
1 голос
/ 14 апреля 2020

Ваш вопрос может понравиться: Добавить дополнительный столбец в объединенный CSV-файл Вы можете создать свой собственный лог c, он очень гибкий

def func(row):
     # do your generate logic here,and return
    return re.match(row["Regex"],row["Data"]) and 1 or 0
df["Match"]=df.apply(func, axis=1)
print(df)

#lambda for short
df["Match"]=df.apply(lambda r:re.match(r["Regex"],r["Data"]) and 1 or 0, axis=1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...