Операция на Regex идентифицировала цифры в python кадре данных - PullRequest
1 голос
/ 07 апреля 2020

У меня есть один фрейм данных с 2 столбцами. 3-й столбец имеет следующий формат вывода:

DF:

       reg     value   o/p**
    2 for $20    11     20/2
    4 for $24    12     24/4
    2 for $30    13     30/2
 Get $10 Cash    14     14
    3 for $30    21     30/3

Сначала я должен сопоставить [\ d] + для [$] [\ d] + в столбце reg, а затем нужно обновить столбец значений как 2-е целое число в reg, разделить на первое целое число в reg, если совпадение не содержит того же значения.

Мой код is:

df["value"]=df["reg"].map(lambda x: (int(re.findall("[\d]+",x)[1]))/int(re.findall("[\d]+",x)[0]) if(re.search(r"[\d]+ for [$][\d]+" , x)) else x)

Вывод кода корректен только для случаев совпадения.

1 Ответ

0 голосов
/ 07 апреля 2020

Попробуйте:

df["value"]=df.apply(lambda x: (int(re.findall("[\d]+",x["reg"])[1]))/int(re.findall("[\d]+",x["reg"])[0]) if(re.search(r"[\d]+ for [$][\d]+" , x["reg"])) else x["value"], axis=1)

вывод:

    reg             value
0   2 for $20       10.0
1   4 for $24       6.0
2   2 for $30       15.0
3   Get $10 Cash    14.0
4   3 for $30       10.0

вы выбираете только обычный столбец, поэтому вы не смогли получить значение

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