Pandas создать несколько столбцов через несколько групп захвата регулярных выражений - PullRequest
1 голос
/ 02 марта 2020

У меня есть столбец в кадре данных, который выглядит следующим образом:

COMPRA DE MANTENIMIENTO INSUMOS OT:15424 PLACA:TSW894 OC:28826

, и я хочу создать два новых столбца следующим образом:

df[['OT','OC']] = df['FAC_DESC'].str.extract(r'(OT\S*)(OC\S*)')

Но не работает, (оба столбца заполнены NaN) работает только тогда, когда я использую только одну группу захвата или когда я использую '?' между группами захвата, но только поймать последнюю группу. Я полагаю, что что-то упустил ...

1 Ответ

1 голос
/ 02 марта 2020

Самый простой способ - изменить шаблон регулярного выражения, чтобы он соответствовал словам между OT и O C, добавив .*:

df = pd.DataFrame({"col":["COMPRA DE MANTENIMIENTO INSUMOS OT:15424 PLACA:TSW894 OC:28826"]})

df[['OT','OC']] = df['col'].str.extract(r'(OT\S*).*(OC\S*)')

print (df)

                                                 col        OT        OC
0  COMPRA DE MANTENIMIENTO INSUMOS OT:15424 PLACA...  OT:15424  OC:28826
...