Регулярное выражение Панды заменить значение из другого столбца - PullRequest
0 голосов
/ 20 сентября 2019

У меня есть 2 столбца панд, у одного есть filepath, а у другого столбца новое имя папки, я пытаюсь заменить имя папки новым именем папки, используя regex replace

df['new_path'] = df.root.str.replace(r'A-[0-9]*-END', df.new_folder_name)

Я получаю сообщение об ошибкедолжна быть строкой или вызываемой, возможно ли заменить соответствующее регулярное выражение значением из соответствующего столбца?

1 Ответ

0 голосов
/ 20 сентября 2019

Вы можете сначала скомпилировать шаблон, а затем использовать apply:

import pandas as pd
import re

df = pd.DataFrame({"filename":[1,2,3],
                   "filepath":["C:/A-1-END","C:/A-12342-END","D:/A-777-END"],
                   "new_folder_name":["newfolder1","newfolder2","newfolder3"]})

pat = re.compile(r"A-[0-9]*-END", re.IGNORECASE)

df["new_path"] = df[["filepath","new_folder_name"]].apply(lambda x: pat.sub(repl=x[1],string=x[0]),axis=1)

Результат:

   filename        filepath new_folder_name       new_path
0         1      C:/A-1-END      newfolder1  C:/newfolder1
1         2  C:/A-12342-END      newfolder2  C:/newfolder2
2         3    D:/A-777-END      newfolder3  D:/newfolder3
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...