Я пытаюсь выяснить, как выполнить скользящее задание на основе соответствия регулярному выражению.У меня есть датафрейм ключей (keys_df) и фрейм новых данных, поступающих (new_df).Для каждого имени в new_df, если имя содержит любую из подстрок в столбце keys_df.contains
, присвойте parent_id
и parent_name
этой новой записи.Если совпадений нет, оставьте значение NULL.
Из двух фреймов данных:
import pandas as pd
keys_df = pd.DataFrame([ ["steve" , "2266", "Steve, Inc"],
["edward" , "3377", "Ed, Inc"],
["Juan" , "4488", "Juan, Inc"],
["Pedro" , "5599", "Pedro, Inc"]],
columns=["contains", "parent_id", "parent_name"])
new_df = pd.DataFrame([ [ "9845" , "steve (bikes) qc", None,None],
[ "9846" , "mark inc",None,None],
[ "9847" , "young steve",None,None],
[ "9845" , "Juan 22",None,None],
[ "9845" , "Zak",None,None]],
columns=["id", "name", "parent_name", "parent_id"])
Я бы хотел, чтобы вывод выглядел примерно так:
id name parent_id parent_name
"9845" "steve (bikes) qc" "2266" "Steve, Inc"
"9846" "mark inc" None None
"9847" "young steve" "2266" "Steve, Inc"
"9845" "Juan 22" "4488" "Juan, Inc"
"9845" "Zak" None None
Здесь также возникает вопрос эффективности.Выходной фрейм данных будет добавлен в таблицу SQLite.Так что если есть способ сделать это в SQLite поверх панд, это будет оценено.
Спасибо за любую помощь.