Pandas 拆分列 (dtype:list) 后跟动态 lookup/merge

Pandas splitting of columns (dtype:list) followed by dynamic lookup/merge

我有一个数据框如下。

Table_name Domain Use_case
group Reporting finance, marketing
resource Banking, Reporting marketing, sales, finance
customer Reporting sales

Domain_df[]:

Domain_name Domain_id
Reporting 1001
Banking 1002

Usecase_df[]

usecase_name id
Finance 2001
marketing 2002
sales 2003

我想要的最终结果是:

Table_name Domain Use_case domain_id usecase_id
group Reporting finance, marketing [1001] [2001,2002]
resource Banking,Reporting marketing, sales, finance [1002,1001] [2002,2003,2001]
customer Reporting sales [1002] [2003]

最初我尝试使用定界符拆分列,并使用

形成单独的列

df=df.join(pandas.DataFrame(df['Verified Use case'].str.split(', ', expand=True)).add_prefix('use_case_'))

我得到的结果是这样的:

Table_name Domain Use_case domain0 domain1 usecase0 usecase1 usecase2
group Reporting finance, marketing Reporting NA finance marketing NA
resource Banking, Reporting marketing, sales, finance Banking Reporting marketing sales finance
customer Reporting sales reporting NA sales NA NA

除此之外,我需要对域和用例表的所有列执行 merge/lookup 以获取以列中列表的形式返回到数据框的相应 ID。应该是对应ids的列表。

将每一列拆分为单独的动态列然后进行合并是否是一种好方法(在这种情况下编写此合并语句很棘手,我需要一些帮助)

但我的问题是有没有其他方法可以直接实现此目的而不拆分它?

如果没有,那如何实现动态合并呢?

PS: 在列域中输入的值的数量 use_case 是一个变量。

如果 question/result 不清楚,请告诉我。

非常感谢

这是一个可能的解决方案:

domain_map = domain_df.set_index('Domain_name')['Domain_id'].to_dict()
usecase_map = usecase_df.set_index('usecase_name')['id'].to_dict()

df = df.assign(
    domain_id=(
        df['Domain'].str.split(', ')
                    .map(lambda lst: list(map(domain_map.get, lst)))),
    usecase_id=(
        df['Use_case'].str.split(', ')
                      .map(lambda lst: list(map(usecase_map.get, lst)))),
)